Versioning e Alfa, Beta e Gamma
![]()
Tornato dalle vacanze sto cercando di fare un giro sui i miei blog preferiti ed ho trovato questo post di Jeff Atwood molto molto istruttivo per coloro i quali oggi sviluppano software.
![]()
Tornato dalle vacanze sto cercando di fare un giro sui i miei blog preferiti ed ho trovato questo post di Jeff Atwood molto molto istruttivo per coloro i quali oggi sviluppano software.
Non sono stato mai un sostenitore di questo ambiente di sviluppo se non per quanto riguarda i concetti di base e l’eleganza del linguaggio.
I concetti di Java, come linguaggio di programmazione ed ambiente di esecuzione in-Sandbox, sono talmente potenti da aver segnato per sempre l’informatica spingendo la tecnologia verso una direzione che ne ha aiutato la rapida espansione.
Purtroppo, una cosa sono i concetti e i linguaggi, un’altra è il business e, più in generale, la capacità di realizzare fattivamente certe cose. In questo Sun ha fallito miseramente generando lei per prima una confusione ed una incertezza che hanno minato alla base il suo gioiello.
Ora che, in virtù dei soliti esperti da brochure pubblicitaria, per alcune cose abbiamo scelto di utilizzare questa tecnologia unitamente a Oracle e BEA ci troviamo nel peggiore dei mondi possibili di questo variegato universo: il versioning hell.
Avendo vissuto, nel mondo Windows, il famoso DLL Hell non pensavo di doverci ricadere dopo aver tanto penato in quell’incubo. Invece….
Sun e compari hanno pensato bene di moltiplicare i flavor di Java (J2EE, J2SE, Java Beans e compagnia cantante..) e se questo non bastasse il versioning è da panico. Alcune cose fatte in 1.4 non vanno in in 1.4.05 oppure in 1.4.11 e il JDK è versionato in maniera non allineata con la JVM che ha al suo interno.
In più BEA ha la sua versione speciale della JVM, JRockit, che segue un versioning tutto suo a ruota dei rilasci di SUN ma non completamente allineati e causa dei problemi con le librerie: in una parola INCUBO.
Sono un pò di giorni che abbiamo un misterioso problema su una conversione di tipo LONG nel driver di Oracle che si presenta, almeno in maniera riconducibile ad un problema unico, solo nell’ambiente di produzione.
L’errore è questo:
java.sql.SQLException: ORA-01461: si può eseguire associazione di valore LONG solo per inserirlo in una colonna LONG at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:330) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:287) at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:744) at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:215) at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:954) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1169)at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3338) at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3444) at weblogic.jdbc.wrapper.PreparedStatement.execute(PreparedStatement.java:104) at it.code.dao.ChildDAO.processNotUniqueChild(ChildDAO.java:278) at it.code.dao.ChildDAO.serialize(ChildDAO.java:183) at it.code.model.Child.serialize(Child.java:75) at it.code.engine.Feeder.createParentsFS(Feeder.java:1358) at it.code.engine.Feeder.run(Feeder.java:278) |
Sebbene l’argomento sia stato già a lungo dibattuto e indirizzato mi sono trovato a cambiare il driver Oracle seguendo la tabellina seguente:
JDBC Thin for All Platforms
Sarà sicuramente per mancanza di esperienza ma questo mi sembra veramente confuso e non aiuta la soluzione del problema.
Infatti il driver non è il problema e l’assenza di un debugger serio costringe ad andare per esclusione allungando drammaticamente i tempi di risoluzione.
.Net certo non è perfetto ma ha affrontato, e risolto, tutti i problemi che stanno uccidendo Java.
L’ironia vuole che, il motto che avrebbe dovuto fare di Java un grande linguaggio di programmazione oltre che di runtime (Write once, run everywhere), è stato modificato e scimmiottato in modo quanto mai efficace dai suoi avversari (write once, debug everywhere).
del.icio.us tags: java, bea, oracle, driver, versioning