Open JDK: Oracle e Apple assieme per Java su Mac OS X

Oracle e Apple annunciano congiuntamente il progetto Open JDK che permetterà di portare Java SE7 su Mac OS X
di Andrea Bai pubblicata il 12 Novembre 2010, alle 15:57 nel canale Sistemi OperativiApple
52 Commenti
Gli autori dei commenti, e non la redazione, sono responsabili dei contenuti da loro inseriti - infoNon vedo cosa ci trovi di strano.
E' sempre andato così e probabilmente tranne nei mercati di nicchia andrà sempre così.
Già negli anni 90, io che sono un estimatore delle prestazioni max possibili, venivo ribatutto con argomenti del tipo "ma chi se ne frega se la tua implementazione gira 5 volte più veloce e va bene anche sul 386. Se poi ci metti 6 mesi a finirla. Scusa ma prefisco l'altra implementazione pronta in un mese ed al più mi compro un 486 pompato o i nuovi pentium. Ricordati che quello che costa davvero nel mondo informatico è il costo del programmatore non il costo dell'HW"
Basta vedere che linguaggi come Python (che sinceramente a me piace molto), Ruby, ...ecc prendono sempre più piede.
Questo nonostante spesso siano da 20 a 50 volte più lenti del già lento per voi Java.
Solo che se raggiungono la velocità minima che serve (o al più esiste HW su cui poterli far girare abbast. velocemente) e ti permettono di essere più produttivi (leggi fare in 2 mesi quello che in java ce ne impiegheresti 6) all'azienda spesso va bene così
Avevi anche iniziato bene il tuo intervento dicendo che si deve fare un’analisi e se è necessario avere performance allora si scegli un linguaggio come c/c++ o meglio ancora supportare il tutto con delle librerie scritte direttamente in assembly, invece dove la performance non è un must allora si preferisce il linguaggio che abbassa i costi e velocizza lo sviluppo (che ribadisco in alcune aziende NON ITALIANE iniziano a preferire il c# sul java visto il vasto campo che lo coinvolge).
Però questa frase tua non è per niente bella, è una delle filosofie fortemente criticate dagli ingegneri di software e analisti. Si deve far spendere il giusto al cliente e quindi fornirgli il software giusto che deve girare sulle macchine giuste o peggio ancora in quelle già presenti che spesso, anche nelle aziende più moderne, sono macchine vecchie e lente o secondo te le aziende si mettono ad aggiornare i calcolatori così come farebbe un smanettone col computer di casa?!
Diciamo che hai parlato esattamente come un programmatore puro, che sa solo buttare codici e basta, senza un minimo di conoscenza di analisi ed ingegneria (lascio chiaro che non ti sto dando dell’incompetente ma sottolineo soltanto il tono del tuo intervento) e spesso legato a quel linguaggio che lo conosce benissimo e quindi non tantissimo bravo a programmare a prescindere dal linguaggio scelto.
Però questa frase tua non è per niente bella, è una delle filosofie fortemente criticate dagli ingegneri di software e analisti. Si deve far spendere il giusto al cliente e quindi fornirgli il software giusto che deve girare sulle macchine giuste o peggio ancora in quelle già presenti che spesso, anche nelle aziende più moderne, sono macchine vecchie e lente o secondo te le aziende si mettono ad aggiornare i calcolatori così come farebbe un smanettone col computer di casa?!
Diciamo che hai parlato esattamente come un programmatore puro, che sa solo buttare codici e basta, senza un minimo di conoscenza di analisi ed ingegneria (lascio chiaro che non ti sto dando dell’incompetente ma sottolineo soltanto il tono del tuo intervento) e spesso legato a quel linguaggio che lo conosce benissimo e quindi non tantissimo bravo a programmare a prescindere dal linguaggio scelto.
Si spendere il giusto ma devi fare anche i conti giusti però.
Se tu gli fai spendere 100.000E senza cambiare le macchine (che magari hanno già 3 anni) ed un'altra ditta gli fa spendere 80.000E (divisi in 50.000E di sviluppo e 30.000E di nuove macchine) chi è che gli ha fatto spendere il giusto ?
E secondo te a chi commissionano il progetto ?
E' ovvio che io non intedevo con il mio esempio casi in cui risparmi 30.000E di sviluppo ma poi hai bisogno di 50.000E di HW o di altri costi nascosti.
E cmq nessuno ti obbliga a cambiare l'HW magari per la tua applicazione anche le prestazioni più lente (diciamo 3 volte più lente) di Java sono sufficienti.
Se riesci (per ipotesi) a fare un gioco in Java che tiene 70 fps come minimo sull'hw esistente, sai cosa gliene frega alla software house che se lo fai in C++ ti fa 300 fps.
Quando nel primo caso ti paga 6 mesi e nel secondo 1 anno di lavoro.
Anche per questo esiste l'ingegneria per evitare che il programmatore inizia a comportarsi come se stesse facendo un programma per se stesso nel proprio "garage". Vale per tutti i campi, mio cognato che fa l'ingegnere civile e ha grosse costruzione ha sempre da ridire con gli architetti che fosse per loro farebbero sempre cose impossibili e improponibile nel nome del chic e della simmetria, ignorando i tempi e i costi.
Se tu gli fai spendere 100.000E senza cambiare le macchine (che magari hanno già 3 anni) ed un'altra ditta gli fa spendere 80.000E (divisi in 50.000E di sviluppo e 30.000E di nuove macchine) chi è che gli ha fatto spendere il giusto ?
E secondo te a chi commissionano il progetto ?
E' ovvio che io non intedevo con il mio esempio casi in cui risparmi 30.000E di sviluppo ma poi hai bisogno di 50.000E di HW o di altri costi nascosti.
E cmq nessuno ti obbliga a cambiare l'HW magari per la tua applicazione anche le prestazioni più lente (diciamo 3 volte più lente) di Java sono sufficienti.
Senza contare che anche il time to market è un costo (forse occulto per i più
Anche ammesso di costare solo poco di più come costi di sviluppo (perché magari fai buoni prezzi) e di non richiedere cambi di HW, ma in compenso consegnare a Dicembre un progetto commissionato a Gennaio, mentre il concorrente glielo fornisce a Giugno.
All'azienda magari quei 6 mesi di NON utilizzo del nuovo sw costano molto di più che cambiarsi l'intero HW.
Poi certo che se facendo un'analisi completa viene fuori che C++ è meglio COME COSTI di una implementazione Java.
Allora dico, se hai le conoscenze per farlo vai di C++
Quando nel primo caso ti paga 6 mesi e nel secondo 1 anno di lavoro.
Un gioco come dici tu deve sempre rappresentare il meglio della resa grafica e fisica e questo non vuol dire niente meno che enorme quantità di calcoli che continua sempre a crescere, difatti i giochi hanno sempre fatto fatica a mantenere anche i 60fps costanti figurati 300fps come dici tu (ovvio che se provi un gioco di 5 anni fa con una macchina attuale quello va fortissimo, ma un prodotto vecchio di 5 anni interessa soltanto ad una fetta di mercato inutile da considerare).
E se cerchi di fare altri esempi ti ricordo che man mano che la tecnologia è andata avanti sono migliorati anche i software portando con loro un incremento dei calcoli (ovviamente non ai livelli dei giochi) quindi il discorso è dinamico.
PS: non puoi voler tirare fuori adesso il discorso "ah ma facevo una ipotesi" perchè sarebbe troppo facile sparala grossa per poi ritrattare
E se cerchi di fare altri esempi ti ricordo che man mano che la tecnologia è andata avanti sono migliorati anche i software portando con loro un incremento dei calcoli (ovviamente non ai livelli dei giochi) quindi il discorso è dinamico.
PS: non puoi voler tirare fuori adesso il discorso "ah ma facevo una ipotesi" perchè sarebbe troppo facile sparala grossa per poi ritrattare
Che un gioco deve essere per forza lo stato dell'arte ed innovare a tutti i costi è solo una tua considerazione.
Penso che alle software house interessi più il profitto che la fama in sé (anche se quella aiuta).
Ed in alcuni casi 4Milioni di copie vendute di un gioco di medio livello (e prezzo budget), a volte possono fare più profitto di 3Milioni di copie vendute di un gioco costoso sia come prezzo di vendita che come costi di sviluppo (e quindi meno ricavi per copia), salvo veri best seller che vengono comprati a tutti i costi nonostante il prezzo iniziale.
Io ho detto che se Java mi permette per il mio target di gioco di tenere 70 fps MINIMI (e facendo tutto quindi anche il resto oltre la grafica, alias fisica, AI, ...ecc), perdere più tempo a farlo in C++ per avere prestazioni maggiori (ma poi di quanto ? sognamoci i 10 o 20x, perché non è sempre così
Poi se tu parti dal presupposto che un gioco per essere vendibile (e molto profittevole per la società
Ma siamo sicuri che sia del tutto vero ?
Magari hai fatto l'analisi corretta o magari parti anche tu tal presupposto "C++ è enormemente più veloce o ha altre mille fantastiche possibilità che Java non ha".
E quindi sei fan C++ come altri sono fan Java.
PS
"Ingegneria del software"
Prima di dare dell'incompetente a qualcuno direi di contare fino a 10.
Anche perché qualsiasi analista, programmatore, ingegnere di medio livello ti farebbe notare che le prestazioni non sono tutto, anzi in alcuni contesti sono l'ultima cosa (a meno di non avere vincoli di progetto particolari).
L'obiettività passa anche nell'analizzare pregi e difetti delle varie soluzioni e un qualsiasi analista, programmatore, ingegnere di medio livello ti farebbe notare che C++ non è di certo esente da difetti, anzi (il mio giudizio al riguardo è pessimo, in particolare vedo il C++ come un male di cui purtroppo non possiamo fare a meno).
E' chiaro che la lentezza dello sviluppo di Java possa rappresentare un problema, ma non mi sembra che lo standard C++ stia evolvendo così rapidamente, anzi.
D'altro canto non è detto che debba essere necessariamente un difetto, anche perché ad ogni nuova revisione di un linguaggio bisogna tenere conto dei tempi di apprendimento.
Per fare un esempio, credo che la maggior parte del software scritto in .NET sfrutti in maniera nulla o parziale le ultime features della piattaforma, probabilmente la maggior parte di esso è scritto tenendo a mente la versione 2.0 del framework anche e soprattutto per motivi di compatibilità.
L'ingegneria è l'arte del compromesso, tuttavia mi sento di lanciare uno spunto di riflessione: possibile che nel 2010 dobbiamo affidarci a linguaggi e compilatori vetusti e loro evoluzioni francamente poco convincenti?
Possibile che non riusciamo a fare di meglio? Ecco direi che il caso di riflettere su questo.
Devi effettuare il login per poter commentare
Se non sei ancora registrato, puoi farlo attraverso questo form.
Se sei già registrato e loggato nel sito, puoi inserire il tuo commento.
Si tenga presente quanto letto nel regolamento, nel rispetto del "quieto vivere".