In che modo JVM e Java WORA sono diversi dagli altri linguaggi di alto livello?

11

Nel mondo Java, parliamo spesso della JVM, e quando Java era nuovo aveva la presunta caratteristica killer di "Scrivi una volta, esegui ovunque".

Dal modo in cui le persone parlano e scrivono, questo sembra diverso dal modo in cui Python, per esempio, funziona. Tuttavia non sono stato a conoscenza di alcun modo in cui il codice Python che ho scritto funzionasse diversamente su un'altra macchina. (Anche se non ho scritto così tanto Python.)

Quindi cosa mi manca? In che cosa differisce la JVM da un interprete Python? C'è un modo in cui Python manca della indipendenza della piattaforma Java? O è solo una differenza culturale?

    
posta Eric Wilson 29.10.2010 - 18:14
fonte

5 risposte

16

Java fa un ottimo lavoro isolandoti dal sistema operativo sottostante e ti offre gli stessi strumenti esatti sulla maggior parte delle piattaforme su cui lavora per parlare di cose nel sistema operativo sottostante.

Python d'altra parte non fa un buon lavoro nel isolarti dal sistema operativo sottostante, non ha un modo standard di gestire le comunicazioni di processo (guarda le differenze tra il modulo sys e il modulo os tra un Windows e * nix implementazione di Python per esempio.)

Ho scritto codice in python che funzionava solo su una casella * NIX o su una casella di Windows usando solo chiamate API Python disponibili, dove in Java sarebbe molto difficile scrivere codice che fosse solo API Java che non avrebbe funzionato allo stesso modo sia su una casella Windows o * NIX box

    
risposta data 29.10.2010 - 18:40
fonte
3

Per via topica e solo da un runtime linguistico, c'è poca differenza. La JVM in particolare è progettata non solo come interprete, ma anche come compilatore di runtime, inferenza di codice, un livello di virtualizzazione strumentale che può avere aggancio dinamico, varie semantiche di GC e la capacità di descrivere l'ergonomia della virtualizzazione, per citarne alcuni. Python può essere eseguito in una JVM? Java può essere eseguito in un interprete Python?

La maggior parte degli interpreti sono interpreti linguaggio / token di runtime, JVM (e altri) come sai interpretare / compilare / eseguire codice intermedio. IBM, ad esempio, lo fa da decenni fuori da Java, non è una novità. Perfino VB ha funzionato nel codice intermedio per qualche tempo, credo?

Il WORA è per lo più passé ora quante lingue interpretate girano praticamente ovunque invariate.

    
risposta data 29.10.2010 - 18:35
fonte
3

Quando Java era nuovo, WORA era qualcosa di cui vantarsi - in particolare, si poteva compilare su una piattaforma ed eseguirlo (in bytecode compilato) su altre piattaforme.

Naturalmente, i linguaggi interpretati funzionano praticamente allo stesso modo indipendentemente dalla piattaforma su cui viene eseguito l'interprete (purché l'interprete sia disponibile per quella piattaforma). Tuttavia, i file system, i problemi di autorizzazione, codifiche, terminazioni di riga e innumerevoli altri piccoli ma irritanti problemi possono causare mal di testa. Alcune cose dipendenti dalla piattaforma non sono facili da astrarre.

    
risposta data 29.10.2010 - 18:36
fonte
1

Python ha una GUI indipendente dalla piattaforma?

In ogni caso, la funzione WORA è stata - di nuovo - per attirare i programmatori C, poiché C tendeva a modellare la piattaforma sottostante da vicino, e poiché le piattaforme erano diverse (dimensione della parola? endianità?) creare programmi C completamente portatili richiedeva grande cura e attenzione.

La promessa di Java era che tutta questa noiosità non doveva essere fatta, in quanto la piattaforma è molto ben definita e tu sai che un char è 16 bit, ecc. Anche la GUI è scritta in Java e anche al 100% portatile, che significa che il tuo programma può essere eseguito su un computer di cui non hai mai sentito parlare e persino eseguirlo correttamente.

    
risposta data 29.10.2010 - 21:08
fonte
-5

Tranne che Java è enfaticamente non WORA. Ho visto il software Java che si è rotto dopo che Java è stato aggiornato a una versione superiore sul numero di versione minore . IMHO, WORA è solo un espediente di marketing.

    
risposta data 29.10.2010 - 22:52
fonte

Leggi altre domande sui tag