martedì 19 febbraio 2008

Spiegazioni...

Vediamo se Splinder stavolta non decide di cancellare tutto... allora, se non siete informatici con conoscenze di Java e programmazione di rete potete saltare la parte in grigio, tanto è la spiegazione tecnica di uno dei tanti motivi per cui Java è una cacca.

In pratica, io devo organizzare una comunicazione con Java RMI (Remote Method Invocation, praticamente una libreria per invocare metodi su un oggetto che risiede su server remoto), e devo trovare il PC su cui risiede l'oggetto remoto attraverso un messaggio in multicast UDP. Il server crea l'oggetto, lo associa ad un nome canonico su un apposito registro che lega nomi ad istanze di oggetto e passa il nome dell'oggetto al cliente via socket UDP. Tutto facile.

Non funzionava. Dopo tre giorni che ci bestemmiavo dietro, aspetto il ricevimento stamani e ci stiamo UN'ORA a bestemmiare dietro io e il professore fino a che si capisce cosa succede. In pratica Java ha delle librerie eccezionali per i socket TCP, sui quali si può trasmettere veramente di tutto, mentre per UDP ha solo il supporto per trasmettere array di byte. Roba da età della pietra cristo, persino C trasmette qualunque cosa via UDP, e di qua mi ritrovo a dover incapsulare qualunque dato in un array di byte. Non solo: il ricevente deve pre-allocarsi il pacchetto dove ricevere il dato. PRE-ALLOCARE. Ma che cazzo è, C??? Dio bono, Java, quel linguaggione che a regola dovrebbe avere classi per pulirmi i calzini, non è buono a ricevere roba via UDP e allocarsi da solo un pacchetto. Se mi assumono alla Sun gliele faccio io le librerie a quei nullafacenti... vabbè, devo pre-allocare il pacchetto dicevo. E non solo. Devo anche allocare spazio a sufficienza per il massimo pacchetto in arrivo possibile. Così io attendevo allocandomi tipo 32 byte, nei quali il messaggio di risposta (ovviamente) navigava... così bel bello appendevo in fondo alla rmi URL (indirizzo http-style che identificava indirizzo, porta e nome dell'oggetto remoto sul registro quanto arrivato via UDP e mi diceva che nessuno aveva mai aggiunto roba con quel nome al registro. Questo perchè nel costruttore di stringa che prende un array di byte come parametro, quel furbo di un linguaggio considera stringa anche la parte di array di byte messa a zero. Così avevo una serie di 10-15 caratteri a '\0' che mi fottevano tutta la URL.


In pratica, riassumendo per i non-informatici, per colpa dell'incompetenza dei programmatori della Sun mi laureo un mese e mezzo dopo. Nulla di grave, per carità... ma un po' i coglioni girerebbero a tutti a dover ritardare la laurea perchè una massa di imbecilli ha fatto le librerie di un linguaggio con i piedi!!!!

Lo Rè

6 commenti:

  1. Girerebbero forte anche a me. c'è troppa incompetenza in giro, non se ne può più

    RispondiElimina
  2. Il brutto poi è che... insomma, la Sun è un pezzo grosso, Java è un linguaggio utilizzatissimo nel mondo... non è possibile avere ste librerie del cazzo, dio bono

    RispondiElimina
  3. Se penso che a me mancano ancora 4 anni alla laurea...mi viene da piangere T.T

    RispondiElimina
  4. Il bello e' che quando dico JAVAMERDA la gente mi guarda male...



    OH, JAVAMERDA.



    -w

    RispondiElimina
  5. ghghghhghg... guarda mi ci so preso un'incazzatura fuori dal normale

    tu mi capisci ^^



    ps welcome XD

    RispondiElimina
  6. @Lia: ti assicuro che volano... a me sembra ieri che ho cominciato e so gia quasi laureato o_O

    RispondiElimina