Het idee achter Java is eigenlijk al decennia oud: een virtuele machine die een abstractie vormt van onderliggende hardware en het besturingssysteem zodat een platformonafhankelijke uitvoer van software mogelijk is. Ik kan me nog herinneren dat ik eind jaren zeventig op een Apple II rommelde met UCSD Pascal. Als een abstracte ’softwareprocessor‘ voerde een zogeheten P-code-interpreter de Pascal-code uit op een supereenvoudige 8 bit 6502, binnen een adembenemend kleine 64 kB. Java is gebaseerd op datzelfde idee, en bedenker James Gosling heeft, zo las ik, ook ooit nog eens gestoeid met UCSD Pascal.
Gosling ontwikkelde de taal bij First Person, een dochterbedrijf van Sun Microsystems. In eerste instantie richtte zijn team zich daarbij op settopboxen, gadgets en andere consumentenelektronica, om deze, vaak embedded, systemen snel te kunnen bouwen. Opmerkelijk genoeg ging de creatie al vlug een heel andere kant op en werd het voor enterprise-systemen een veel groter succes. Echt embedded was niet bepaald de kracht van Java.
Alleen voor mobieltjes rond Java 2 Micro Edition, en het daarin gedefinieerde ’profiel‘ MidP, was er nog enige actie. Dit MidP groeide echter uit tot een nachtmerrie. Er ontstond een ongebreidelde wildgroei van versies voor allerlei soorten telefoons met een scala aan displays en resoluties. Ontwikkelaars moesten hun toepassingen daar iedere keer speciaal op aanpassen, om maar te zwijgen van alle bugs in de verschillende implementaties. Tel daarbij op een totaal ondoorzichtig vlechtwerk van optionele modules met idiote, nietszeggende namen en de puinhoop was compleet.
