software moet in ieder geval zo veel mogelijk native zijn geschreven.
Pff, da’s echt een hopeloos ouderwetse opvatting.
In de eerste plaats draait Java-code op een VM die qua snelheid native code meestal makkelijk kan evenaren, soms zelfs overtreft. Bij gebrek aan garbage collection heeft C++ bijvoorbeeld copy-semantics om in veel gevallen expliciete allocatie/deallocatie onnodig te maken, maar daardoor worden objecten vaak onnodig gekopiëerd terwijl dat bij garbage collection niet hoeft. Daarnaast kan de VM runtime-optimalisaties toepassen zoals het unrollen van vaak uitgevoerde codepaden, terwijl een compiler dat niet kan.
Bovendien gebruiken de meeste apps überhaupt niet veel processorkracht. De als irritant ervaren bottleneck van de meeste apps zit in I/O, zoals wachten op 3G of wifi-internet, of een location fix. Dus waarom zou je in vredesnaam extra tijd, geld en moeite willen steken in het schrijven van die apps in een taal als C++ of Objective C? Dat is voortijdige optimalisatie. En op de Java VM kan ook veel meer draaien dan alleen Java; met hetzelfde gemak maak je je app in de taal die je leuk of fijn vindt als Scala, Python, Ruby, Haskell of JavaScript.
Als je het mij vraagt is de enige goede reden om een app in C++ te schrijven omdat je bestaande code hebt, of omdat je de garbage collection-pauzes wilt vermijden (m.a.w. voor high-end games). Alhoewel die GC-pauze tegenwoordig ook bijna verdwenen is dankzij de concurrent garbage collectorion.
Het platform van Android bewijst ook wel dat je voor goed lopende apps echt geen native code nodig hebt. (En als je het wél nodig hebt, dan kan het natuurlijk altijd nog.)
[Reactie gewijzigd door Grauw op donderdag 6 oktober 2011 21:17]
toch blijft Java langzamer dan native code...
verder klopt het wel, maar een hopeloos ouderwetse opvatting zou ik het niet willen noemen. Als je high-performance wil zal je toch verder moeten kijken dan een Java-VM...
Wil je echter makkelijk een applicatie maken die op meerdere platforms en meerdere toestellen werkt zonder specifieke aanpassingen te moeten doen, JA, dan is Java handiger en sneller/makkelijker met ontwikkelen...
toch blijft Java langzamer dan native code...
In specifieke use-cases nog wel ja, maar dat zijn vaak allemaal low-level zaken - in het meerendeel van de use cases is Java sneller. Niet alleen dat, maar ontwikkelen gaat ook vlotter (en ja, dat is zeker belangrijk).
Maar we wachten geduldig op je bronvermelding.
Ik doe zoveel moeite om uit te leggen waarom Java dus over het algemeen niet langzamer is dan native code en dan krijg je zo’n antwoord. Zucht.