|
Irina Athanasiu Profesor la Facultatea de Automatică şi Calculatoare, Universitatea "Politehnica" Bucureşti. irina@cs.pub.ro
|
În curând (23 mai) se vor aniversa 10 ani de când limbajul Java a fost prezentat la conferinţa SunWorld ‘95. Primele utilizări în afara firmei Sun Microsystems datează din martie 1995. Unul dintre principile de bază considerate în proiectarea acestui limbaj a fost simplitatea atât pentru programatori cât şi pentru implementatori. S-a decis utilizarea unui număr minim de concepte şi mecanisme care să permită realizarea unor aplicaţii dintr-o zonă care ar corespunde acum sistemelor embedded. O întoarcere la simplitatea limbajului C utilizând mecanisme mai puternice şi mai eficiente. În acelaşi timp o depărtare de C++, un limbaj devenit mult prea stufos prin adăugarea succesivă de concepte fără a renunţa la nimic din istorie. Pentru că autorii au simţit că piaţa nu era încă pregătită pentru dispozitive inteligente s-au îndreptat spre alt domeniu aflat în expansiune. Este vorba de Internet, unde era nevoie de o soluţie portabilă care să elimine incompatibilităţile existente între implementările limbajelor pentru procesoare şi sisteme de operare diferite. A urmat un comportament de tip bulgăre de zăpadă. Programatorii au învăţat Java pentru că era limbajul care se cerea pe piaţa muncii, chiar dacă multă vreme această cerere nu a fost justificată de produse performante. Pentru că era limbajul pe care îl ştiau programatorii, Java a devenit limbajul suport pentru multe tehnologiile dezvoltate pentru Internet (despre rolul şi evoluţia limbajelor de tip scripting în aceaşi istorie, cu altă ocazie). O dată cu aceste tehnologii au fost create medii de programare şi testare care au crescut productivitatea programatorilor. De menţionat faptul că apariţia unui număr mare de instrumente auxiliare pentru dezvoltarea programelor a condus la scăderea nivelului de expertiză tehnică necesar pentru a programa în Java. Există acum posibilitatea generării unor porţiuni importante de cod pentru aplicaţii tipice cu numai câteva click-uri. Evoluţia nu s-a produs fără să apară schimbări faţă de propunerea iniţială. De la limbajul unic, bun pentru orice situaţie, prin utilizarea unui număr mereu în creştere de biblioteci s-a ajuns acum să existe Java pentru o diversitate de tipuri de aplicaţii şi clase de dispozitive. O scurtă vizită la site-ul comunităţii care se ocupă de propunerea de noi specificaţii legate de limbajul Java (http://jcp.org/en/jsr/all) oferă o imagine destul de clară asupra diversităţii domeniilor în care se doreşte utilizarea limbajului Java. De curând, septembrie 2004, a apărut o versiune nouă de specificaţii (JavaTM 2 Platform Standard Edition 5.0). Această versiune conţine modificări foarte diverse. Se consideră că este cea mai importantă modificare a specificaţiilor Java de la inventarea sa. Au fost introduse tipuri generice, se pot face cicluri asupra elementelor unei colecţii sau vectori fără să se utilizeze iteratori sau variabile index, s-a introdus un mecanism pentru adnotări pentru clase, metode sau câmpuri, s-a formalizat modelul de memorie utilizat de către programele Java în execuţie, etc. Modificări care ţin de maturizarea limbajului dar în acelaşi timp se înscriu pe traiectoria depărtării faţă de simplitatea iniţială. De exemplu, până la această versiune pentru rezolvarea situaţiilor care impun sincronizarea era prevăzut un singur mecanism – o formă simplificată de monitor. Printr-o programare atentă, utilizând acest mecanism, se poate rezolva orice situaţie de sincronizare. Este însă nevoie de o înţelegere a problemei şi a mecanismului în sine pe care nu o stăpâneşte orice programator grăbit. În noua versiune există toate tipurile de mecanisme de sincronizare "cunoscute", chiar şi unele care nu apar în cărţile clasice în domeniu. În ce măsură această soluţie rezolvă problema programatorului grăbit, rămâne de văzut. Utilizarea de soluţii prefabricate este benefică pentru creşterea productivităţii, dar există pericolul ca programatorii să se bazeze pe utilizarea unor mecanisme "sigure", în situaţii în care aceste mecanisme nu se potrivesc sau în situaţii în care astfel de soluţii au un impact sever asupra performanţelor. Vorbind despre versiunea nouă nu pot să nu amintesc faptul că s-a simţit nevoia introducerii mecanismului de apel de metodă cu număr variabil de argumente. Acest mecanism nu este iubit de către cei care implementează compilatoarele pentru că impiedică realizarea unor optmizări de cod, dar se pare că este dorit de către programatori. Din punct de vedere al istoriei 10 ani este foarte puţin. Având în vedere istoria recentă cred că cei care au grijă de Java l-au înscris pe lista limbajelor cu viitor. |