In een recente artikel (Computable, 7 februari, pag.7) maakt u melding van het – in opdracht van Microsoft – uitgevoerde onderzoek naar de werking van Java op diverse platformen. U concludeert dat Java-applicaties op Power PC- of X86-processoren langzamer zouden werken en minder accurate uitkomsten zouden geven dan op het Sparc-platform.
De conclusie dat Java dus minder universeel is en geoptimaliseerd zou zijn voor Sparc, is echter niet correct. Onderzoeker Jerome Coonen heeft dit ook niet zo gezegd. Een correcte weergave zou zijn dat "numerieke Java-applicaties dezelfde resultaten geven op alle systemen", of "numerieke applicaties geschreven voor high-performance computers en PC’s geven dezelfde resultaten".
De waarheid is dat Java zodanig gespecificeerd is, dat het dezelfde resultaten geeft op alle platforms, opdat numerieke applicaties overdraagbaar zijn naar diverse platformen. De taal is zodanig gedefinieerd, dat deze 32-bit en 64-bit interne bewerkingen uitvoert in floating point-berekeningen. Op een PC (bijvoorbeeld X86) waar de hardware 80-bit bewerkingen uitvoert in de rekeneenheden, moeten de resultaten geconverteerd worden naar 64-bit na elke bewerking, juist om elk verschil in resultaten te vermijden.
De meeste krachtige, ‘high-performance’ computers die nu op de markt zijn voor het ‘kraken van getallen’, maken intern niet gebruik van 80-bit bewerkingen. Om Java op elke machine dezelfde resultaten te laten geven met een acceptabele snelheid, moest Java gedefinieerd worden in termen van 32-bit en 64-bit bewerkingen.
Als medeauteur, samen met James Gosling en Guy Steele, van de Java Language Specification heb ik met name dit aspect van Java besproken met de ontwikkelaars bij Intel, aan wie duidelijk is gemaakt dat deze ‘conversie naar 64-bit’ noodzakelijk was om Java correct te implementeren. Ik heb hen toen ook voorgesteld om de hardware-support in te bouwen, om deze bewerkingen sneller te kunnen uitvoeren in toekomstige versies van de Intel-processor. Deze gesprekken vonden plaats in 1995. We mogen dus hopen dat deze verbeteringen inderdaad zijn opgenomen in de toekomstige versies van de Pentium-familie en de nieuwe architectuur die Intel ontwikkelt met HP.
Wij zijn altijd zeer open geweest over de beslissingen die wij genomen hebben in relatie tot numerieke Java-bewerkingen, en hebben onze redenering steeds uitgelegd aan wie het maar wilde horen. Ik heb specifiek ontwikkelaars bewust proberen te maken van het feit dat Java ondersteuning nodig heeft voor gradual underflow, zoals gespecificeerd in de Ieee-standaard, om een onevenwichtige prestatie van hun floating point-hardware te voorkomen.
Op dit moment kijken we naar voorstellen ter verbetering van de ondersteuning van numerieke processen in toekomstige versies van Java. Steeds is daarbij de doelstelling dat Java op élk platform hetzelfde resultaat geeft. Toekomstige versies van Java zullen waarschijnlijk additionele floating point-formaten ondersteunen, met een breder bereik en een grotere precisie. Zulke formaten zijn momenteel slechts zeer beperkt beschikbaar. Het was nooit de bedoeling van de ontwerpers van de Ieee-standaard dat het 80-bit formaat, zoals gebruikt op Intel-platforms, zou worden blootgesteld als data-type in een programmeertaal als Fortran of Java.
Wij willen graag met de gehele industrie, in een open proces, werken aan het definiëren van dergelijke aanvullende formaten en de daaraan verbonden bewerkingen, met als doel dat de ondersteuning hiervan op álle belangrijke microprocessorarchitecturen kan plaatsvinden. Dit zal wetenschappers, onderzoekers en iedereen die berekeningen doet die extreme precisie vereisen, voorzien van veel snellere computers om hun werk op te verrichten.
Bill Joy is oprichter en vice-president van Research Sun Microsystems, Inc.