Er is een minder belangrijk-oorlog die in de adressenlijst van de Oudstudenten van de Zon gaat en elders waar de gemeenschappelijke misvatting: Java is langzaam opduikt opnieuw en opnieuw, veel aan de wanhoop van de goed geïnformeerde ontwikkelaars van Java die voor leeftijden hebben geweten dat Java snel zelfs wordt vergeleken bij C++ en verscheidene jaren zo geweest. Dit alles dook weer op omdat de Zon besliste zijn ticker symbool in JAVA ( eerder was het SUNW) te veranderen. Elk van dit frustreert aan Java vreselijk ontwikkelaars die trots in Java vergen en zich goed bewust van zijn mogelijkheden omdat zij hefboomwerking het elke dag zijn. Zo deze mythe om voor eens en voor altijd te rusten, rust zullen wij?


Mythe 1: Java is Geïnterpreteerdev taal en zodat moet het langzaam zijn

Java wordt momenteel enkel-in-tijd-gecompileerd door JVM (de virtuele machine van Java). De enkel-in-tijd-compilatie geeft het gelijkwaardige prestaties aan gecompileerde toepassingen, soms beter. JIT van de zon is niet enige ook niet. IBM en anderen voorzien hun implementatie ook van JVM van enkel-in-tijd-compilatie.

U kunt de programma's van Java in inwoner executables met vrije compilers zoals gcj (http://gcc.gnu.org/java/) of betaalde degenen zoals JET van de Houtwol ook compileren (http://www.xlsoft.com/en/products/jet/index.html).

De traagheid van Java is niet intrinsiek, die een architecturale misvatting zoals hierboven aangetoond is. Maar wacht daar is meer.

Java tegenover C++ Benchmarks

Bekijk sommige benchmarks vergelijkend Java met C++.

Prestaties van Java tegenover C++ door J.P.Lewis en van Ulrich Neumann from het Laboratorium van de Grafiek en van de Technologie Immersive van de Computer, Universiteit van Zuidelijk Californië

http://www.idiom.com/~zilla/Computer/javaCbenchmark.html

Dit artikel vanaf 2003 vindt Dit artikel een aantal benchmarks onderzoekt en vindt dat de prestaties van Java op numerieke code met dat van C++, met wenken vergelijkbaar zijn die de relatieve prestaties van Java blijven verbeteren. Wij beschrijven dan duidelijke theoretische redenen waarom deze benchmarkresultaten zouden moeten worden verwacht.

Ik zou willen nog verder citeren aangezien zij een gedetailleerde verklaring over de traagheidsmythe van Java gaven en het grondig verjagen:

Conclusies: Waarom is Java is zo Populair Langzaam?

Java is nu bijna gelijk aan (of sneller dan) C++ op lage en numerieke benchmarks. Dit zou niet moeten verrassend zijn: Java is een gecompileerde taal (alhoewel gecompileerde JIT).

Niettemin, wordt het idee dat Java langzaam is wijd geloofd. Waarom dit zo is misschien het interessantste aspect van dit artikel is.

Bekijk verscheidene mogelijke redenen:

* Circa 1995 van Java was langzaam. De eerste incarnaties van Java niet Java een compiler JIT, en werden vandaar bytecode geïnterpreteerde (als Python bijvoorbeeld). De compilers JIT verschenen in JVMs van Microsoft, Symantec, en in java1.2 van de Zon.

Deze verklaring is onaannemelijk. De meeste computermensen kunnen van de nauwkeurige snelheid in GHz recentste bewerkers rammelen, en zij volgen deze informatie aangezien het elke maand (en dit jarenlang hebben gedaan) verandert. Maar toch deze verklaring ons vraagt om te geloven dat zij niet kunnen herinneren dat een enige en eerder belangrijke verandering zich van de taalsnelheid in 1996 voordeed.

* Java kan nog langzaam zijn. Bijvoorbeeld, zijn de programma's die met de draad-veilige Vectorklasse worden geschreven noodzakelijk langzamer (op één enkele bewerker minstens) dan die geschreven met de gelijkwaardige draad-onveilige klasse ArrayList.

Deze verklaring unsatisfying eveneens, omdat C++ en andere talen gelijkaardige abstractiesancties hebben. Bijvoorbeeld, boeken Kernighan en de Snoeken de Praktijk van Programmering hebben een lijst met de volgende ingangen, beschrijvend de prestaties van verscheidene tenuitvoerleggingen van een programma van de tekstverwerking:
Versie P.II van 400 Mhz
C 0.30 seconde
C++/STL/deque 11.2 seconden
C++/STL/list 1.5 seconden

Een andere klaarblijkelijk goed - het bekende probleem in C++ is de overheadkosten van het terugkeren van een voorwerp van een functie (verscheidene onnodig voorwerp leiden tot/exemplaar/destruct cycli zijn geïmpliceerdi).

* Het het programmaopstarten van Java is langzaam. Aangezien een programma van Java start, ritst het de bibliotheken van Java open en compileert delen van zich, zodat kan een interactief programma voor de eerste paarseconden van gebruik traag zijn.

Deze benaderingen die een redelijke verklaring voor de snelheidsmythe zijn. Maar terwijl het de indrukken van de gebruiker zou kunnen verklaren, verklaart het niet waarom vele programmeurs (die het idee van een geïnterpreteerdi programma kunnen gemakkelijk begrijpen dat) wordt gecompileerd het geloof delen.

Twee van de interessantste observaties betreffende deze kwestie zijn dat:

1. er is een gelijkaardige huisvuilinzameling is langzame mythe die ondanks decennia van bewijsmateriaal aan het tegendeel, voortduurt en
2. dat in de oorlogen van de Webvlam, de mensen gelukkig zijn om hun snelheidsindrukken voor vele pagina's te bespreken zonder ooit het verwijzen naar daadwerkelijke gegevens.

Samen stellen deze voor dat het mogelijk is dat geen hoeveelheid gegevens de geloven van volkeren zal veranderen, en dat in werkelijkheid deze geloven verzend waarschijnlijk weinig hebben met Java, huisvuilinzameling, of het anders verklaarde onderwerp te doen. Ons antwoord ligt waarschijnlijk ergens in sociologie of psychologie. De programmeurs, ondanks hun beweerde appreciatie van logische gedachte, zijn niet immuun voor een soort mythologie, hoewel deze bepaalde mythen willekeurig en vrij onschadelijk zijn.

Hier is een andere benchmark op Java tegenover C++

Java is Sneller dan C++ Benchmark

http://www.kano.net/javabench/
Dit werd ook geciteerd in Jdj- tijdschriftartikel: http://java.sys-con.com/read/45250.htm

Ik gebruikte G++ (GCC) 3.3.1 20030930 (met glibc 2.3.2-98) voor C++, met - de vlag van O2 (voor zowel i386 als i686). Ik compileerde normaal de code van Java met de compiler van Java 1.4.2_01 van de Zon, en stelde het met de Zon 1.4.2_01 JVM in werking. Ik stelde de tests aangaande Red Hat Linux 9/Fedora Test1 met de pit van 2.4.20-20.9 op T30 laptop in werking. Laptop heeft een Pentium 4 mobiele spaander, 512MB van geheugen, een soort langzame schijf.

De resultaten die ik waren heb gekregen dat Java in veel gevallen beduidend sneller is dan geoptimaliseerde C++.
JVM de starttijd werd omvat in deze resultaten. Dat betekent zelfs met JVM starttijd, is Java nog sneller dan C++ in veel van deze tests.

BTW: Het artikel verbindt ook aan het eind met veel andere benchmarks.

Hopelijk heb ik definitief rust aan de mythe van Java ben langzaam gelegd. Het is een waarneming, een flagrant valse waarneming, niet een werkelijkheid. Krijg over het.