Cunoaște Intuit, prelegere, ceea ce istoria de Java

Platforma Java

Deci, Java are o istorie lungă și complicată de dezvoltare, dar este timpul să ia în considerare ceea ce sa întâmplat la creatorii, ce proprietăți această tehnologie.

Cel mai bine-cunoscute și în același timp cauzarea dezbaterea cea mai intensă, proprietatea - multi- sau cross-platform. S-a spus că se realizează prin utilizarea de mașini virtuale JVM. care este un program regulat, executat de către sistemul de operare și o aplicație Java oferind toate facilitățile necesare. Din moment ce sunt specificate toate opțiunile JVM, este singura sarcină - să pună în aplicare mașini virtuale pe toate platformele existente și utilizate.

Prezența mașinii virtuale determină multe dintre proprietățile de Java. dar acum ne concentrăm pe următoarea întrebare - este limbajul Java compilat sau interpretat? De fapt, sunt utilizate ambele abordări.

Mulți dezvoltatori inițial puternic criticat Soare sloganul bold „Scrie o dată, a alerga peste tot“, dezvăluind tot mai multe discrepanțe și incoerențe în diferitele platforme. Cu toate acestea, trebuie să recunoaștem că au fost prea nerăbdător. Java a fost în fază incipientă, iar prima versiune a specificațiilor nu erau exhaustive.

O privire mai atentă la modelul de obiect Java este realizată pe tot parcursul, dar reprezintă caracteristicile de bază. În primul rând, creatorii de moștenire multiplă abandonate. Sa decis că este prea complicat și confuz de program. Limba folosește o abordare alternativă - un tip special de „interfață“. El a discutat în detaliu în capitolul corespunzător.

Mai mult, în Java utilizați tastarea puternic. Aceasta înseamnă că fiecare variabilă și fiecare expresie are un tip care este deja bine cunoscut la compilare. Această abordare este folosită pentru a simplifica identificarea problemelor, deoarece compilatorul raportează imediat eroarea și indică locația lor în codul. Căutare aceleași excepții (excepții - așa-numitele incorecte în cazul în Java) în timpul execuției programului (execuție) necesită testarea extinse, cauza defectului poate apărea într-o clasă complet diferit. Astfel, aveți nevoie pentru a pune efort suplimentar în scris de cod, dar crește semnificativ fiabilitatea (și acesta este unul dintre scopurile fundamentale pentru care a fost creat și noua limbă).

În Java, există 8 tipuri de date care nu sunt obiecte. Acestea au fost identificate cu prima versiune și niciodată nu sa schimbat. Aceste cinci tipuri intregi: byte, short, int, lung, și să-i aparțin carbonizată caracter. Apoi, două de tip float fracționată și dublu, și în cele din urmă un tip boolean boolean. Aceste tipuri sunt numite simplu sau primitiv (din limba engleză primitivă), și sunt discutate în detaliu în curs cu privire la tipurile de date. Toate celelalte tipuri - sau obiect de referință (de referință engleză.).

Sintaxa Java pentru un motiv oarecare, mulți induși în eroare. Este într-adevăr se bazează pe sintaxa limbajului C / C ++, așa că, dacă te uiți la codul sursă al programelor scrise în aceste limbi și în Java, nu este posibil să se înțeleagă imediat care dintre ele sunt scrise în orice limbă. Acesta a dat într-un fel de multe motive să credem că Java - un ușor C ++, cu caracteristici suplimentare, cum ar fi colectorul de gunoi. Colectarea automată a gunoiului (colector de gunoi) ne vom uita la mai jos, dar presupunem că limbajul Java este același ca și C ++, - foarte înșelătoare.

Dar, după cum sa menționat deja, C ++ este fundamental improprie pentru noile provocări cu care s-au stabilit dezvoltatorii de compania Sun, astfel încât modelul Java a fost construit de la zero, și în conformitate cu obiectivele foarte diferite. lecturi suplimentare vor dezvălui treptat diferențele specifice.

În ceea ce privește modelul de obiect, atunci probabil a fost construit pe modelul de limbi, cum ar fi Smalltalk de la IBM, sau dezvoltat în anii '60 la Centrul de calcul norvegian, limba Simula, care se referă la creatorul de Java Dzheyms Gosling.

În Java, mecanismul de colectare a gunoiului automat (de la colectorul de gunoi în limba engleză) a fost introdus de la început. Să presupunem, programul creează un obiect, lucrează cu el, iar apoi vine un moment când nu mai este necesară. Trebuie să eliberați memorie, astfel încât să nu interfereze cu sistemul de operare să funcționeze corect. In C / C ++ acest lucru trebuie să fie făcut în mod explicit din program. Este evident că, cu această abordare, există două pericole - fie pentru a elimina un obiect care este nevoie de altcineva (și, în cazul în care să se întâmple într-adevăr cerere, eroarea va avea loc), sau nu îndepărtați obiectul, care a devenit inutil, și este o scurgere de memorie, care este, programul incepe sa consume mai mult și mai multă memorie.

La elaborarea unui programator Java nu crede despre eliberarea de memorie. Mașina virtuală se contorizează numărul de trimiteri la fiecare obiect, iar în cazul în care acesta ajunge la zero, atunci acel obiect este marcat pentru procesarea gunoier. Astfel, programatorul trebuie să urmărească numai că a avut nici o referire la obiectul nedorit. Colectorul de gunoi - este un fir de fond de execuție, care scanează în mod regulat și elimină facilitățile existente nu mai sunt necesare. Programul nu poate fi afecta colectorul de gunoi. numai să inițieze în mod explicit următoarea trecere printr-o caracteristică standard. În mod evident, acest lucru simplifică foarte mult dezvoltarea de programe, în special pentru începători.

Cu toate acestea, dezvoltatorii cu experiență sunt nemulțumiți că nu pot controla complet tot ceea ce se întâmplă cu sistemul lor. Nu există informații exacte exact atunci când un obiect este șters, devin inutile, atunci când începe să funcționeze (și, prin urmare, să ia resurse de sistem) flux de colectare a gunoiului, etc. Dar, cu tot respectul pentru experiența programatori, trebuie remarcat faptul că un număr mare de eșecuri ale programelor scrise în C / C ++, cade pe memoria incorectă, și, uneori, se întâmplă chiar și cu alimente pe scară largă companii foarte grave.

În cele din urmă, boom-ul de Internet anilor '90, avânt și de a veni cu cerințe noi, mai stricte pentru dezvoltarea de maturitate. Proiectele cu mai mulți ani, care au fost în ultima rutina, nu mai satisface nevoile clienților, noul sistem a trebuit să fie creat pentru maximum un an, și, uneori, într-o chestiune de luni.

Pe lângă introducerea colector de gunoi. S-a luat alte măsuri pentru a facilita dezvoltarea. Unele dintre ele au fost deja menționate - respingerea multiplă simplificare sintaxei moștenire, etc Abilitatea de a crea aplicații multi-threaded a fost implementat în prima versiune de Java (studii au arătat că este foarte convenabil pentru utilizatori, iar standardele existente se bazează pe sistemele cu caractere care sunt depășite de mai mulți ani. în urmă). Alte caracteristici vor fi discutate în capitolele următoare. Cu toate acestea, faptul că crearea și susținerea sistemelor de fapt mai ușor în Java. decât C / C ++, a fost mult timp un fapt general acceptat. Cu toate acestea, după ce toate aceste limbi sunt create pentru scopuri diferite și fiecare are avantajele sale incontestabile.

O altă proprietate importantă de Java - securitate. Accentul inițial pe aplicații distribuite, și, în special, decizia de a executa applet-uri pe masina client, a făcut problema de a proteja una dintre prioritățile. Atunci când se lucrează orice mașină virtuală Java operează o serie de măsuri. Ceea ce urmează este doar o scurtă descriere a unora dintre ele.

În al doilea rând, prezența unui interpret virtual mașină facilitează tăiat cod rău intenționat în fiecare etapă a lucrării. Primul cod de octet este încărcat în sistem, de obicei sub forma de clasă fișiere. JVM verifică cu atenție toate dacă acestea sunt supuse regulilor generale ale securității Java, și în cazul în care nu a fost creat de hackeri cu ajutorul unor alte mijloace (și dacă transferul distorsionat). Apoi, în timpul rulării, interpretul poate verifica cu ușurință cu privire la admisibilitatea fiecărei acțiuni. Posibilitatea de clase care au fost încărcate de pe un disc local sau prin rețea, în mod semnificativ diferite (utilizatorul poate atribui cu ușurință sau revoca drepturi specifice). De exemplu, applet-urile implicite nu au acces la sistemul de fișiere local. Astfel de restricții au construit în toate bibliotecile standard de Java.

set Descris de proprietăți Java sugerează că limba este foarte potrivit pentru dezvoltarea de Internet și Intranet (rețeaua internă a societăților) pe bază de aplicații.

În cele din urmă, caracteristica importantă de Java - este dinamismul. Limba este foarte bine conceput în dezvoltarea sa implicat sute de mii de dezvoltatori, si multe companii mari. Principalele etape ale acestei evoluții acoperite pe scurt în secțiunea următoare.

Deci, să rezumăm. Java platformă are următoarele avantaje:

  • tolerabilitate, sau cross-platform;
  • OO, un model de obiect eficient;
  • sintaxa obișnuită a C / C ++;
  • Încorporat și un model de securitate clare;
  • se concentreze pe aplicațiile distribuite de rețea Internet sarcină;
  • dinamism. ușurința de dezvoltare și adăugarea de noi caracteristici;
  • ușurința de dezvoltare.

Dar noi nu ar trebui să presupunem că mai ușor dezvoltarea mijloacelor de a învăța o limbă care nu este deloc necesar. Pentru a scrie un program foarte bun, a construi mari, sisteme complexe au nevoie de o înțelegere clară a conceptelor de bază ale Java și biblioteci. Este această concentrare a acestui curs.

versiune și produse de bază Java

Un produs bun început că este definit ca soluții software de la Sun Company, care sunt „modele de implementare“ (implementare de referință).

  • caietul de sarcini limbajul Java. JLS. caietul de sarcini limbaj Java (care descrie limba, tipurile de date, proiectarea de bază, etc.);
  • caietul de sarcini JVM;
  • Java Development Kit. JDK - instrumente de dezvoltare, constând în principal din utilități, biblioteci de clase standard și demo-uri.

caietul de sarcini JVM este destinat în primul rând pentru creatorii de mașini virtuale, și, prin urmare, aproape niciodată folosit Java -programmistami.

Prima versiune conținea un total de 8 biblioteci standard:

  • java.lang - clasele de bază necesare pentru a rula orice aplicație (nume - prescurtarea de la limba);
  • java.util - multe clase helper utile;
  • java.applet - clase pentru crearea de applet-uri;
  • java.awt. java.awt.peer - o bibliotecă pentru a crea interfețe grafice cu utilizatorul (GUI), numit Abstract Window Toolkit. AWT. El a descris în detaliu în capitolul 11;
  • java.awt.image - clase suplimentare pentru lucrul cu imagini;
  • java.io - lucrul cu fluxuri de date (fluxuri) și fișiere;
  • java.net - lucru cu rețeaua.

Astfel, toate biblioteca începe cu java. acestea sunt standard. Toate celelalte (începând cu com, org, etc.) pot fi modificate în orice versiune, fără suport de compatibilitate.

Imediat explica versiuni de sistem de denumire. Versiunea Desemnarea este format din trei cifre. În timp ce prima este întotdeauna un 1. Acest lucru înseamnă că menținerea compatibilitate deplină între toate versiunile 1.h.h. Acesta este un program scris într-un JDK mai vechi. întotdeauna rula cu succes pe mai noi. Dacă este posibil, să respecte și compatibilitatea inversă - în cazul în care programul este compilat JDK mai nou. și orice biblioteci noi nu sunt utilizate, în cele mai multe cazuri, vechea mașină virtuală va fi capabil de a efectua un astfel de cod.

A doua cifră sa schimbat la 0 la 4 (acesta din urmă, la momentul desigur). În fiecare versiune a existat o creștere semnificativă a bibliotecilor standard (212, 504, 1781, 2130 și 2738 - cu numărul de clase și interfețe 1.0 1.4), și a adăugat unele caracteristici noi în limba în sine. Schimbat și utilitățile sunt incluse în JDK.

În cele din urmă, a treia cifră reprezintă dezvoltarea unei singure versiuni. Limba sau bibliotecile nu a schimbat, numai erorile sunt eliminate, sunt optimizate, se poate schimba (adăugat) utilități argumente. De exemplu, cea mai recentă versiune de JDK 1.0 - 1.0.2.

La primul succes JDK 1.0 a sosit, și critici. Principalele deficiențe identificate de către dezvoltatori, sunt după cum urmează. În primul rând, desigur, performanta. Prima mașină virtuală se execută foarte lent. Acest lucru se datorează faptului că JVM. De fapt, acesta este un interpret care lucrează întotdeauna mai lent decât codul compilat este executat. Cu toate acestea, optimizarea cu succes, pentru a elimina acest dezavantaj, a fost încă să vină. De asemenea, remarcat este posibilități destul de sărace AWT. lipsa de baze de date și altele.

Pentru primele trei săptămâni de JDK 1.1 a fost descarcat de mai mult de 220.000 de ori în mai puțin de un an - mai mult de două milioane de ori. În momentul de față, versiunea 1.1 este considerată a fi complet depășită și dezvoltarea sa a oprit pe 1.1.8. Cu toate acestea, datorită faptului că cele mai frecvente browser-ul MS IE este încă doar acceptă această versiune, ea continuă să fie folosit pentru a scrie un mic applet.

  • interfață fereastră îmbunătățită. care a primit un nume special - Swing;
  • punerea în aplicare Drag-and-drop;
  • suport 2D-grafica, lucru mai confortabil cu imagini;
  • API-ul de accesibilitate pentru utilizatorii cu handicap

Listă de oportunități emergente este foarte mare, asa ca vom enumera cele mai importante dintre acestea sunt:

  • Java 2 Platform, Standard Edition (J2SE);
  • Java 2 Platform, Enterprise Edition (J2EE);
  • Java 2 Platform, Micro Edition (J2ME).

De fapt, o astfel de clasificare este așteptată de mult timp, în special, o varietate de specificații și biblioteci, au existat câteva zeci, ci pentru că au nevoie de structurare clară. În plus, această diviziune facilitează dezvoltarea și promovarea tehnologiei Java.

J2SE este destinat utilizării pe stațiile de lucru și computere personale. Standard Edition - Java-based și dezvoltare directă JDK (instrument pentru dezvoltatori a fost redenumit j2sdk).

J2EE conține tot ce ai nevoie pentru a crea, de înaltă fiabilitate, aplicații de server distribuite sofisticate. Condițional poate spune că Enterprise Edition - este un set puternic de biblioteci (de exemplu, Enterprise Java Beans EJB.) Și un exemplu de implementare a platformei (Application Server, Application Server), care le suportă. Funcționarea unei astfel de platforme se bazează întotdeauna pe j2sdk.

Noua platformă poate funcționa în două moduri - client și server. Moduri diferă în alte setări și algoritmi de optimizare. În mod implicit, lucrarea este în modul client.

În cele din urmă, pentru a demonstra nivelul de dezvoltare al Standard Edition sunt diagramele standard, care descriu toate componentele tehnologiei, documentația pentru versiunile 1.3 și 1.4.