Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Windows 7, XP
  • O introducere în programarea Java. Ce tehnologii sunt componentele principale ale platformei Java? Tehnologii Java și dezvoltare de aplicații web

O introducere în programarea Java. Ce tehnologii sunt componentele principale ale platformei Java? Tehnologii Java și dezvoltare de aplicații web

Limbajul de programare Java și sistemul său de rulare însoțitor au fost concepute astfel încât, odată dezvoltate și compilate, programele să fie livrate pe Internet în formă binară și să ruleze pe orice mașină compatibilă cu Java. Securitatea a făcut parte din dezvoltarea Java de la bun început. Această secțiune va discuta despre funcționarea acestui sistem de securitate.

Java este un limbaj de tip sigur. Aceasta înseamnă că compilatorul va respinge orice încercare de a utiliza variabila astfel



răzbunare cu tipul ei. Pentru comparație, luați în considerare următoarele

Acesta generează un număr aleator și îl stochează în indicatorul p. Apoi stochează un octet zero la adresa conținută în p, suprascriind ceea ce era acolo înainte - cod sau date. În Java, constructele care amestecă tipuri în acest fel sunt interzise de gramatica însăși. În plus, Java nu are variabile pointer, fantome, alocări de memorie gestionate de utilizator (cum ar fi malloc și free) și toate referințele la matrice sunt verificate în timpul execuției.

Programele Java sunt compilate în cod binar intermediar numit bytecode JVM. Există aproximativ 100 de comenzi în JVM, dintre care majoritatea împing obiecte de un anumit tip în stivă, le scot din stivă sau concatenează aritmetic două intrări pe stivă. Aceste programe JVM sunt în general interpretate, deși în unele
În unele cazuri, acestea pot fi compilate în limbajul mașină pentru o execuție mai rapidă. În modelul Java, appleturile trimise prin Internet pentru execuție de la distanță sunt programe JVM.

Când sosește un applet, acesta este trecut prin procedura de verificare a codului octet JVM pentru respectarea anumitor reguli. Un applet compilat corespunzător le va potrivi automat, dar nimic nu împiedică un atacator să scrie un applet JVM în limbajul de asamblare JVM. Procedura de verificare include căutarea răspunsurilor la următoarele întrebări:

1. Încearcă appletul să falsifice indicatorii?

2. Încalcă restricțiile de acces pentru membrii cursurilor private?

3. Încearcă el să folosească o variabilă de un tip ca o variabilă de alt tip?

4. Generează o supraîncărcare sau o supraîncărcare a stivei?

5. Nu efectuează conversii nevalide ale variabilelor de un tip în variabile de alt tip?

Dacă appletul trece toate aceste teste, poate fi rulat fără teama de a accesa alte zone de memorie decât ale sale.

Cu toate acestea, appleturile pot efectua apeluri de sistem apelând metode (proceduri) Java prevăzute în acest scop. Metodele care au fost folosite pentru a face acest lucru în Java s-au îmbunătățit tot timpul. În prima versiune de Java, JDK (Java Development Kit) 1.0, appleturile au fost împărțite în două clase: fiabile și nesigure. Appleturile preluate de pe discul local au fost de încredere și au permis să efectueze orice apel de sistem de care aveau nevoie. În schimb, appleturile obținute pe internet au fost considerate nesigure. Acestea au fost rulate într-o cutie de nisip, așa cum se arată în Fig. 9.33, iar practic nu aveau voie să facă nimic.

După ce a căpătat experiență cu acest model, Sun a decis că este prea restrictiv. JDK 1.1 a fost semnat digital. Când appletul a venit de pe Internet, a fost verificat să fie semnat de o persoană sau organizație în care utilizatorul are încredere (după cum este determinat de lista utilizatorului de deținători de semnături digitale de încredere). Dacă semnăturile ar putea fi de încredere, appletul ar putea face orice; dacă nu, rula într-un sandbox cu restricții stricte.

După dobândirea de experiență suplimentară, acest sistem s-a dovedit a fi nesatisfăcător, așa că modelul de securitate a fost schimbat din nou. JDK 1.2 a introdus o politică de securitate configurabilă, foarte personalizabilă, care se aplică tuturor applet-urilor, atât locale, cât și la distanță. Acest model de securitate este atât de complex încât o carte separată ar trebui să fie dedicată descrierii lui (Gong, 1999), așa că vom oferi doar o scurtă imagine generalizată a unora dintre principalele sale caracteristici. Fiecare applet este caracterizat de două lucruri: de unde a venit și cine l-a semnat. La întrebarea de unde a venit i se răspunde URL-ul său, iar la întrebarea cine l-a semnat i se răspunde prin cheia privată care a fost folosită pentru a-l semna digital. Fiecare utilizator poate crea o politică de securitate constând dintr-o listă de reguli. Fiecare regulă poate enumera adresa URL, proprietarul semnăturii, obiectul și acțiunea pe care applet-ul o poate face cu obiectul dacă adresa URL a applet-ului este

iar titularul semnăturii se va potrivi cu cele specificate în regulă. Informațiile furnizate conceptual sunt prezentate în tabel. 9.3, deși în realitate este formatat diferit și se referă la ierarhia claselor Java.


Un fel de acțiune permite accesul la un fișier. O acțiune poate defini un anumit fișier sau director, un set de toate fișierele dintr-un director dat sau un set de toate fișierele și directoarele conținute recursiv într-un anumit director. Trei rânduri în tabel. 9.3 corespund acestor trei cazuri. În prima linie, utilizatorul Susan și-a stabilit recordul de permisiuni, astfel încât appleturile care provin de la mașina ei de procesare fiscală, www.taxprep.com și semnate de compania de procesare să aibă acces de citire la datele sale fiscale din fișierul 1040.xls... Ei pot citi doar acest fișier, pe care niciun alt applet nu îl poate citi. În plus, toate appleturile din toate sursele, semnate sau nu, pot citi și scrie fișiere în directorul /usr/tmp.

În plus, Susan are atât de mult încredere în Microsoft încât permite aplicațiilor primite de pe site-ul ei și semnate de Microsoft să citească, să scrie și să ștergă fișiere de sub directorul Office din arborele de directoare, de exemplu, pentru a remedia erori și a instala versiuni noi de software. Pentru a verifica semnăturile, Susan trebuie fie să aibă cheia publică necesară pe disc, fie trebuie să le primească dinamic, de exemplu, sub forma unui certificat semnat de o companie în care are încredere și a cărei cheie publică o deține.

Nu numai fișierele pot acționa ca resurse protejate. De asemenea, puteți proteja accesul la rețea. Aici obiectul va fi un anumit port pe un anumit computer. Computerul este specificat folosind o adresă IP sau un nume DNS; porturile de pe acest computer sunt indicate printr-o serie de numere. Acțiunile posibile includ conectarea la computerul de la distanță și acceptarea conexiunilor care provin de la computerul de la distanță. Astfel, appletul poate accesa rețeaua, dar acest acces este limitat la comunicarea doar cu acele computere care sunt listate explicit în lista de permisiuni. Appleturile pot încărca în mod dinamic cod suplimentar (clase) după cum este necesar, dar încărcătoarele de clasă furnizate de utilizator pot exercita un control puternic asupra mașinilor care pot sursa aceste clase. Există și multe alte instrumente de securitate disponibile.

Mai multe despre subiectul Securitatea în sistemul Java:

  1. Secțiunea 39 Clasificarea contractelor în tipuri separate. - Clasificare romană. - Sistemul de drept prusac, codul francez și austriac. - Sistemul bolții rusești. - Sistemul acestei prezentări.

Ce este securitatea informațiilor? Aceasta este o stare de securitate a informațiilor, care asigură confidențialitatea, disponibilitatea și integritatea acesteia.

De obicei, pentru a evalua starea securității informațiilor, este necesar să înțelegem și să analizăm amenințările și sursele acestora, să evaluăm nivelul de deteriorare, probabilitatea implementării și relevanța amenințărilor, riscurilor (opționale) care ne pot afecta sistemul/ informație.

În opinia mea, este imposibil să se evalueze securitatea unei anumite tehnologii sau limbaj de programare fără a fi legat de o anumită metodă de implementare, adică fără un anumit produs software finit într-un limbaj care are o specificație tehnică detaliată cu o descriere a arhitectura si functionalitatea. Dar nici acest lucru nu va fi suficient, deoarece este necesar să se evalueze starea de securitate a sistemului informațional finit cu arhitectura sa specifică, setul de componente, procesele de afaceri, informațiile și, în sfârșit, oamenii. Permiteți-mi să vă dau un exemplu de construcție a unei case. Dispunem de materiale (nisip, ciment, piatra sparta, caramida etc.) si unelte (galeata, lopata, mistria etc.). Nu vom putea evalua calitatea și fiabilitatea casei finite doar după materialele/uneltele folosite: cât va rezista, dacă va fi crăpată, dacă va fi rece sau liniștită. Trebuie să alegeți un proiect de casă, tehnologie de construcție și o echipă de meșteri. Și numai după finalizarea construcției, vom putea măsura conformitatea cu proiectul, GOST, SNiP-uri, vom verifica măsurătorile protecției termice, zgomot, sarcini, vom analiza calitatea cimentului și vom răspunde la majoritatea întrebărilor. Dar întrebarea principală „cât timp va rămâne?” nu vom avea un răspuns exact, deoarece nu cunoaștem toate condițiile de funcționare ale casei și toți factorii care vor afecta pe tot parcursul timpului.

Cum să păstrați Java în siguranță

Luați Java de exemplu . Este un limbaj de programare orientat pe obiecte; Programele Java sunt traduse în bytecode Java, care este executat de mașina virtuală Java (JVM), un program care procesează cod de octet și transmite instrucțiuni hardware-ului ca interpret. Avantajul acestei metode de executare a programelor este independența completă a bytecode-ului față de sistemul de operare și hardware, ceea ce vă permite să rulați aplicații Java pe orice dispozitiv pentru care există o mașină virtuală corespunzătoare.

« Un limbaj universal „suna bine, dar cea mai comună problemă este și reversul monedei - o scurgere de memorie în JVM, care duce la depășiri și blocări de memorie. În legătură cu această problemă, vulnerabilitățile nu sunt excluse, deoarece postulatul de bază al fiabilității este că cu cât este mai simplu, cu atât mai bine. În acest caz, o plăcintă atât de complexă este asamblată din asigurarea compatibilității unui număr mare de platforme și sisteme de operare, încât este aproape imposibil să urmăriți și să închideți toate vulnerabilitățile găsite în ele și să le eliminați rapid. Pentru același Microsoft, vulnerabilitățile pot fi găsite și remediate după 4-8 ani, și asta dacă nu țineți cont de caracteristicile nedeclarate lăsate intenționat sau din greșeală.

Din practica mea: atunci când programatorii adaugă o nouă funcționalitate care este asociată cu una deja implementată sau repară funcționalitatea veche, atunci în 15% din cazuri sparg un produs care funcționează anterior. Și dacă în același timp nu efectuează testarea completă, la ieșire avem un produs cu funcționalitate nouă, dar cu vechiul parțial nefuncționând. Există, de asemenea, diferențe în codificare pentru diferite platforme, versiuni ale sistemului de operare, software. În acest sens, ne putem imagina cât de dificil este să menții limbajul de programare Java și JVM-ul, ca să nu mai vorbim de problemele de securitate.

În acest moment, a fost lansat Java Development Kit 10, care ne oferă mecanisme de securitate standard, lansate pentru Java SE 8 și descrise în Documentația de securitate. Nu a fost adăugat nimic nou în a zecea versiune.

Rețineți că Oracle are un Centru de resurse de securitate Java. În general, compania împarte securitatea Java în patru secțiuni principale:

A) dezvoltatorii ar trebui:

Urmăriți și utilizați toate cele mai recente actualizări de mediu de dezvoltare și de securitate;

Utilizați programe pentru verificarea corectitudinii codului (de exemplu, Checker Framework);

B) administratorii de sistem ar trebui:

Urmăriți și utilizați toate cele mai recente actualizări pentru Java și componentele necesare pentru ca produsul să funcționeze (inclusiv OS, biblioteci, cadre etc.);

Utilizați regulile de implementare Java descrise de și;

Utilizați un marcaj temporal de încredere.

C) utilizatorii finali ar trebui:

Utilizați întotdeauna cea mai recentă versiune Java originală;

D) profesioniștii în securitate au nevoie de:

Utilizați instrumente avansate de management și îmbunătățiți securitatea (de exemplu, Advanced Management Console);

Monitorizați instalarea la timp a tuturor actualizărilor de securitate;

Este important ca toată lumea să respecte și să respecte regulile și reglementările de siguranță. Atingerea unei stări de securitate la un nivel adecvat se poate face doar împreună și folosind toate măsurile disponibile (tehnice, organizatorice). După cum arată practica mea, în 60% dintre organizații, serviciile IT și de securitate a informațiilor se descurcă bine cu securitatea, precum și cu utilizatorii care folosesc dispozitive corporative și sunt conectați la un singur domeniu. Dar cei mai de necontrolat în acest domeniu sunt dezvoltatorii, liderii de echipă, arhitecții.

Dezvoltare software și probleme de securitate

Mai larg, principalele motive pentru problemele de securitate în aplicații în timpul dezvoltării software sunt următoarele:

A) Lipsa de înțelegere a terminologiei de securitate în general, ca să nu mai vorbim de cunoștințe specifice și soluții aplicate.

De regulă, dezvoltatorii asociază cel mai bine securitatea cu următoarele lucruri: controlul accesului și înregistrarea în jurnal și protecția prin parolă, mai rar - protecția conexiunii la nivel https (folosind mecanisme de criptare care sunt disponibile în mod implicit din cutie). Adică, formal vor folosi metode de securitate, care de fapt vor rămâne formale, „pentru spectacol”, fără a ține cont de cerințele și nuanțe:

Pentru parole: valorile implicite sunt de obicei utilizate și nu sunt configurate suplimentar pentru lungime, putere, frecvență de modificare, nerepetabilitate, număr de încercări. Destul de des, acești parametri nu pot fi modificați, deoarece nu au fost incluși în sarcina de aplicare pentru dezvoltarea software, ceea ce duce la necesitatea de a adăuga cod.

Pentru gestionarea și înregistrarea accesului: în cel mai bun caz, dezvoltatorii au descris grupurile sau rolurile utilizatorilor și obiectele de acces care ar trebui să fie disponibile în software. În cel mai rău caz, dezvoltatorii înșiși au „împărțit” secțiunile și obiectele în cele necesare utilizatorilor și administratorilor. În primul caz, obținem un sistem care poate fi configurat flexibil, dar este nevoie de o perioadă semnificativă de timp pentru a configura și a negocia drepturile. În al doilea - un sistem formal de control al accesului. În plus, dezvoltatorii trebuie să înțeleagă ce fel de informații și în ce volum trebuie înregistrate. Cu toate acestea, adesea nu li se furnizează aceste informații, ceea ce duce la detalii insuficiente în jurnalele pentru a analiza incidentele sau a înțelege ce se întâmplă în software. Sau la stocarea excesivă a jurnalelor și a unei cantități mari de informații, ceea ce impune restricții semnificative asupra capacității de a stoca informații pentru o perioadă de timp necesară (de exemplu, unul până la trei ani) sau este nevoie de achiziționarea de depozite de informații suplimentare. Odată cu înregistrarea redundantă a informațiilor, apar probleme suplimentare cu viteza de analiză și analiză a incidentelor și viteza de găsire a informațiilor necesare. Redundanța poate necesita, de asemenea, finanțare suplimentară pentru extinderea personalului, achiziționarea de sisteme SIEM cu reguli unice pentru procesarea informațiilor sau poate duce la riscuri asociate cu informațiile învechite. În același timp, se alocă prea mult timp analizării și procesării informațiilor.

Protecția canalelor de comunicare nu este mai puțin importantă, în special pentru sistemele de plată și bancare, unde, pe lângă dezvăluirea datelor personale și personale, sunt posibile pierderi financiare. Cel mai adesea se întâmplă să nu se gândească la protecția canalelor și a mijloacelor de transmitere a informațiilor, iar dacă o fac, folosesc setările „implicite”, de exemplu, TLS / SSL. Dar are și propriile particularități în alegerea versiunii de protocol (TLS 1.1, 1.2, 1.3 sau SSL v1-3), algoritm de criptare (RC4, IDEA, Triple DES, SEED, Camellia sau AES), lungimea cheii. Uneori, de exemplu, se alege protocolul corect TLS 1.2, cu criptare AES, o lungime a cheii de 256 de biți, dar uiți de posibilitatea de a alege o adresă pe portul 443 pentru HTTPS și sau portul 80 pentru HTTP, în loc de blocarea portului 80, în urma căruia devine posibil să se obțină acces printr-un canal nesecurizat. Sau, de exemplu, ridică infrastructura pe mașinile virtuale și nu se gândesc deloc la necesitatea închiderii accesului la rețea între mașinile virtuale.

B) A doua problemă este legată de afacere, deoarece investește bani în funcționalități speciale specifice care nu țin cont de blocurile de securitate.

Din păcate, o afacere nu înțelege întotdeauna de ce ar trebui să cheltuiască resurse pe blocuri de securitate, dacă nu există un beneficiu funcțional din acestea, produsul nu va aduce mai mulți bani, dar există doar riscuri probabile care s-ar putea să nu funcționeze. Afacerile înțeleg mai des nevoia de a investi în securitate atunci când a avut loc deja un incident de securitate a informațiilor.

Din păcate, nu numai afacerile sunt de vină pentru acest lucru, ci și mediul său, care:

De asemenea, nu înțelege securitatea;

S-au scutit de buget pentru specialiști în securitatea informațiilor (nu sunt angajați deloc sau sunt angajați specialiști de înaltă specializare, sau este angajată o singură persoană care să fie responsabilă de toate);

Nu am putut să transmit în mod rezonabil nevoia de securitate și să justific corect riscurile actuale (reputaționale, financiare, temporare).

C) Problema cu comunicarea în companie sau lipsa acesteia.

Acesta este cazul când afacerea și mediul său înțeleg nevoia și importanța securității informațiilor. Au alocat bugete, au angajat specialiști corespunzători, dar există dificultăți în comunicarea între unitățile de afaceri și securitatea informațiilor/servicii IT, dezvoltatori.

D) Lipsa de conștientizare a utilizatorilor obișnuiți ai companiei în problemele de securitate a informațiilor.

Să presupunem că aveți toate departamentele necesare, specialiști, măsuri tehnice și organizatorice. Dar utilizatorii rezistă și nu vor să respecte regulile. Aceasta este o situație foarte comună și este, de asemenea, necesar să o rezolvăm în mod cuprinzător, deoarece oamenii nu înțeleg de ce au nevoie de muncă suplimentară pentru a se conforma cu problemele de securitate a informațiilor (verificați fișierele cu antivirus, amintiți-vă parolele complexe, cunoașteți și respectați politicile și afacerile). procese etc.). Este necesar să se organizeze periodic cursuri de master, să se spună la nivel de gospodărie ce este securitatea informațiilor, ce probleme și soluții există, să se comunice obiectivele și obiectivele globale ale securității informațiilor și să le motiveze și impactul lor asupra afacerii.

E) Lipsa arhitecților în securitatea informațiilor - specialiștii în securitatea informațiilor nu sunt întotdeauna implicați în dezvoltarea software-ului, iar programatorii înșiși se gândesc la securitatea arhitecturii și la utilizarea modelelor de securitate scrise și gata făcute (Security patterns).

Dezvoltatorii nu cunosc toate nuanțele și nu pot ști, deoarece sarcina lor este să finalizeze dezvoltarea și să treacă la următoarea. Dacă te aprofundezi în dezvoltarea în sine, procesul este mult mai complicat decât pare. Prin urmare, este necesar să obțineți în mod clar sarcina de la afacere, să o descompuneți în mini-sarcini ușor de înțeles pentru dezvoltatori, să desfășurați dezvoltarea, să efectuați teste alfa și beta, încărcarea, teste funcționale, remedierea erorilor, revenirea la teste - acest proces este ciclic și lung. Prin urmare, nu este de mirare că nu au suficiente resurse pentru a gândi siguranța produsului până la cel mai mic detaliu.

Pentru a vorbi despre securitate, trebuie să rezolvați problemele descrise mai sus. Nu descriu în mod specific opțiunile pentru soluții, deoarece totul depinde de probleme specifice, mediu, condiții. Nu există o pilulă unică și trebuie luate toate măsurile de precauție posibile. Sarcina principală este ca toți angajații companiei să pătrundă, să înțeleagă și să respecte cerințele de securitate a informațiilor și să fie interesați să le respecte. Și abia atunci se va putea vorbi despre eficacitatea și un bun nivel de maturitate al securității informațiilor în companie.

Zona developerWorks Java conține sute de articole, tutoriale, sfaturi și conținut din comunitatea Java pentru a vă ajuta să profitați la maximum de platforma Java și de tehnologiile asociate atunci când dezvoltați aplicații. Cu toate acestea, dezvoltatorilor aspiranți care abia au început să folosească Java le este dificil să navigheze în volumul imens de resurse disponibile pe Internet. Prin urmare, am creat această pagină, care oferă o imagine de ansamblu asupra tehnologiilor Java subiacente în contextul general al capabilităților acestui limbaj. Găsiți link-uri către resurse pentru învățarea ulterioară a Java, cum ar fi articole developerWorks pentru începători și alte resurse educaționale și link-uri către descărcări pentru produsele IBM.

Ești un dezvoltator Java aspirant? Această pagină oferă o privire de ansamblu asupra principalelor tehnologii Java™ și locul lor în dezvoltarea software-ului modern. Cu link-uri către articole introductive developerWorks despre acest subiect și subiecte conexe, alte materiale educaționale și descărcări și produse IBM, această pagină este un punct de plecare excelent pentru a învăța Java.

Ce sunt „tehnologiile Java”?

Java este atât un limbaj de programare, cât și o platformă.

În primul rând, Java este un nivel înalt orientat pe obiecte limbaj de programare... La compilare, care este executat o dată în timpul construirii aplicației, codul Java este convertit în cod de limbaj intermediar ( bytecode). La rândul său, bytecode este analizat și executat ( interpretat) mașina virtuală Java (JVM), care acționează ca un traducător între limbajul Java și hardware-ul sistemului de operare. Toate implementările Java trebuie să emuleze JVM-ul, astfel încât aplicațiile pe care le scrieți să poată rula pe orice sistem care include mașina virtuală Java.

În al doilea rând, Java este platforma software, ale căror versiuni sunt furnizate pentru diverse sisteme hardware. Există trei versiuni de Java (vezi mai jos secțiunea Edițiile platformei Java). Platforma include JVM și Java Application Programming Interface (API), care este un set extins de componente software gata (clase) care facilitează dezvoltarea și implementarea applet-urilor și aplicațiilor. API-ul Java acoperă multe aspecte ale dezvoltării Java, inclusiv manipularea obiectelor de bază, programarea în rețea, securitatea, generarea XML și serviciile Web. API-ul este organizat ca un set de biblioteci numite în pachete care conţin clase şi interfeţe pentru rezolvarea problemelor conexe.

Pe lângă API, fiecare implementare completă a platformei Java trebuie să includă următoarele:

  • Instrumente pentru dezvoltatori pentru compilarea, rularea, monitorizarea, depanarea și documentarea aplicațiilor.
  • Mecanisme standard pentru implementarea aplicațiilor într-un mediu de utilizator.
  • Truse de instrumente care vă permit să creați interfețe grafice complexe pentru utilizator.
  • Biblioteci de integrare pentru accesul programatic la bazele de date și manipularea obiectelor de la distanță.

JVM este, de asemenea, un cadru dovedit pentru rularea aplicațiilor scrise în alte limbi decât Java. În special, Groovy, Scala și implementările specializate ale Ruby și Python oferă dezvoltatorilor capacitatea de a executa limbaje dinamice și funcționale pe JVM (pentru mai multe informații, consultați Care este relația Java cu limbajele dinamice și programarea funcțională?) .

Limbajul Java a fost dezvoltat de Sun Microsystems. În prezent, dezvoltarea tehnologiilor Java, inclusiv lucrările la specificații, implementări de referință și teste de compatibilitate, se desfășoară sub controlul organizației non-profit deschise JCP (Java Community Process), care reunește dezvoltatorii Java și licențiații. În 2007, Sun a lansat o versiune gratuită de Java, care include componentele de bază ale platformei, sub licența GNU GPL v2 (GPLv2). Puteți citi mai multe despre această versiune în secțiunea Java și Dezvoltare software liberă.

De ce ar trebui să înveți Java?

Principalul avantaj al limbajului Java este portabilitatea aplicațiilor Java, adică. Abilitatea de a rula pe orice platformă hardware și sistem de operare, deoarece toate JVM-urile, indiferent de platforma pe care rulează, sunt capabile să execute același bytecode.

Limbajul și platforma Java sunt extrem de scalabile. Puteți crea cu ușurință aplicații pentru dispozitive cu resurse limitate adaptând software-ul scris inițial pentru desktop. Cu toate acestea, Java este, de asemenea, ideal pentru dezvoltarea aplicațiilor Web pe partea de server care permit unui utilizator să acceseze resursele de calcul de pe Web. Capacitatea de a executa în siguranță codul încărcat pe web a fost construită inițial în Java, astfel încât Java oferă un nivel ridicat de securitate atunci când lucrați pe Internet. Aplicațiile web rulează în medii de rulare numite Containere web care oferă multe servicii convenabile, inclusiv trimiterea solicitărilor, securitatea și concurența, managementul ciclului de viață și accesul la API-uri, cum ar fi denumirea, gestionarea tranzacțiilor și e-mailul. Un număr de sunt scrise în Java servere de aplicații care acționează ca containere Web pentru alte componente Java, XML și servicii Web care interacționează cu bazele de date și redă dinamic conținutul paginii Web. Aceste servere oferă, de asemenea, un mediu pentru implementarea aplicațiilor și instrumentelor de întreprindere pentru gestionarea tranzacțiilor, clustering, securitate, conectivitate și nivelurile necesare de disponibilitate, performanță și scalabilitate.

Prin sprijinirea utilizării standardelor deschise în aplicațiile de întreprindere, Java deschide oportunități excelente pentru utilizarea serviciilor Web bazate pe XML pentru a ajuta partenerii de afaceri să facă schimb de resurse și aplicații de informații. Java se află în centrul multor produse și servicii de consultanță tehnică IBM (Produse și tehnologii IBM pentru dezvoltatori Java) și joacă un rol cheie în câteva dintre activitățile de bază ale companiei.

  • Explorați abordarea IBM și aflați cum SOA vă poate ajuta să creați aplicații eterogene cu funcționalități din mai multe surse, atât în ​​interiorul, cât și în afara întreprinderii, susținând astfel procesele de afaceri orizontale. IBM oferă o gamă largă de utilizatori de afaceri și profesioniști IT pentru a vă ajuta să începeți cu această tehnologie.
  • este o abordare bazată pe componente oferită de IBM care oferă o gamă completă de oportunități pentru schimbare strategică. Soluțiile oferite se bazează pe software flexibil, extensibil, deschis, bazat pe standarde (inclusiv Java) și infrastructură hardware.

Edițiile platformei Java
Există trei ediții ale platformei Java care permit dezvoltatorilor de aplicații, furnizorilor de servicii și producătorilor de hardware să creeze soluții care să răspundă nevoilor anumitor grupuri de utilizatori.

  • Java SE (Java Platform, Standard Edition)... Folosind Java SE, puteți construi și implementa aplicații Java pentru desktop și servere și puteți dezvolta software și programe încorporate pentru sisteme în timp real. Ediția Java SE include clasele necesare pentru a crea servicii Web și componentele de bază Java EE (Java Platform, Enterprise Edition). Versiunea actuală a platformei Java SE este Java SE 6, cunoscută și sub numele de „Mustang”. Cu toate acestea, mulți dezvoltatori încă folosesc Java SE 5 (Java 5.0, sau „Tiger”).
    • Pentru o prezentare excelentă a caracteristicilor Java SE 5, consultați articolele din coloană. Majoritatea aspectelor de programare pentru platforma Java SE 5, pentru care au fost construite multe aplicații existente, sunt încă relevante pentru Java SE 6.
    • Acest articol descrie noile caracteristici din Java SE 6 pentru monitorizarea și evaluarea performanței aplicației.
    • Acest articol oferă o introducere într-un limbaj de scripting care rulează pe platforma Java SE 6 și servește la simplificarea programarii interfețelor de utilizator complexe.
    • Această serie din două părți intitulată oferă o introducere în API-ul furnizat de Java SE 6, care permite aplicațiilor Java să execute cod de scripting dinamic și invers. ...
  • Java EE (Java Platform, Enterprise Edition)... Această versiune de întreprindere a platformei îi ajută pe dezvoltatori să construiască și să implementeze aplicații Java portabile, fiabile, scalabile și securizate. Bazându-se pe capacitățile Java SE, Java EE oferă servicii Web, modele de componente, API-uri de gestionare la distanță și pentru implementarea software-ului de întreprindere în SOA și Web 2.0.
    • Citiți articole și pentru o prezentare generală introductivă a capabilităților celei mai recente versiuni a platformei Java EE.
    • Consultați seria - un cadru popular pentru construirea de aplicații Java EE ușoare și fiabile.
    • Pentru mai multe informații despre Java EE, consultați articolele din coloană.
    • Articolele din seria Noțiuni de bază: Migrarea la platforma Java au fost scrise special pentru dezvoltatorii .NET, client/server Windows și ASP pentru a-i ajuta să migreze la Java.
  • Java ME (Java Platform, Micro Edition)... Java ME oferă un mediu de rulare pentru aplicații create pentru o mare varietate de sisteme mobile și încorporate, cum ar fi telefoane mobile, PDA-uri, set-top box-uri și imprimante. Această ediție de platformă oferă interfețe flexibile pentru utilizator, un model de securitate robust, o gamă completă de protocoale de rețea încorporate și suport puternic pentru aplicații de rețea și offline încărcate dinamic. Aplicațiile bazate pe specificațiile Java ME pot rula pe o varietate de dispozitive și pot încă să-și folosească capacitățile sistemului.

Ce tehnologii sunt componentele principale ale platformei Java?

Zona developerWorks Java conține Java inclus. Mai jos sunt enumerate câteva dintre componente, posibile pachete de suplimente și extensii incluse cu fiecare ediție de platformă. Fiecare tehnologie are o scurtă descriere și un link către resurse care descriu locul ei în lumea Java. Rețineți că multe dintre componente sunt incluse în toate cele trei ediții ale platformei Java.

Tehnologii incluse în Java SE:

  • Clasuri Java Foundation (Swing)(JFC) este o colecție de biblioteci de clase Java utilizate pentru a crea interfețe grafice cu utilizatorul și alte funcții grafice în aplicațiile client Java. Management .
  • JavaAjutor este un sistem de ajutor extensibil independent de platformă, care permite dezvoltatorilor și scriitorilor tehnici să încorporeze pagini de ajutor în applet-uri, componente software, aplicații, sisteme de operare și dispozitive și să creeze sisteme de ajutor web. Consultați articolul.
  • Mulțumită Interfață nativă Java(JNI) Aplicațiile Java care rulează în JVM pot interacționa cu programe și biblioteci scrise în alte limbaje de programare.
  • Tehnologie Java Web Start Simplifică implementarea aplicațiilor Java, permițând utilizatorilor să descarce și să ruleze software bogat, cum ar fi foi de calcul, cu un clic pe un buton al mouse-ului, fără instalare (vezi articolul).
  • Conectivitate la baza de date Java(JDBC) este un API care oferă mijloacele de a accesa majoritatea surselor de date relaționale din aplicațiile Java. Se poate conecta la multe baze de date SQL, precum și la alte surse de date tabulare, cum ar fi foi de calcul și fișiere plate.
  • Imagini avansate Java(JAI) este un API orientat pe obiecte care oferă un model de programare simplu, la nivel înalt, pentru a simplifica manipularea imaginilor.
  • Serviciul de autentificare și autorizare Java(JAAS) este o tehnologie care oferă servicii cu un mijloc de a autentifica utilizatorii și de a le verifica drepturile de acces. Include o implementare Java a cadrului standard PAM (Pluggable Authentication Module) și acceptă autorizarea la nivel de utilizator.
  • Extensie Java Criptografie(JCE) este un set de pachete care oferă infrastructură și implementări pentru criptare, generare și schimb de chei și algoritmi de cod de autentificare a mesajelor (MAC). Această tehnologie include, de asemenea, suport pentru cifruri simetrice, asimetrice, bloc și flux, precum și obiecte sigure pentru flux și sigilate. Mai multe detalii pot fi găsite în manual.
  • Obiecte de date Java(JDO) este un model standard de persistență abstractă pentru obiectele Java bazate pe interfețe. Permite dezvoltatorilor să stocheze direct instanțe ale claselor Java de domeniu în stocare persistentă (cum ar fi o bază de date). În unele cazuri, acest model poate înlocui scrierea directă într-un fișier, serializarea, JDBC, precum și utilizarea componentelor EJB de pe partea serverului, atât gestionate de containere (Container Managed Persistence - CMP), cât și starea de stocare independentă (Bean Managed Persistence - BMP).
  • Punga de plastic Extensii de management Java(JMX) oferă instrumente pentru construirea de aplicații distribuite, modulare, dinamice și accesibile pe Web pentru gestionarea și monitorizarea dispozitivelor, software-ului și rețelelor bazate pe furnizarea de servicii (vezi articolul).
  • Java Media Framework(JMF) vă permite să adăugați informații audio, video și alte informații media în aplicațiile și applet-urile Java (consultați manualul).
  • Interfață Java de denumire și director(JNDI) este o interfață unificată pentru accesarea diferitelor servicii de nume și director într-o rețea corporativă. Permite aplicațiilor să se conecteze eficient la o varietate de servicii de denumire și director într-un mediu de întreprindere eterogen.
  • Extensii Java Secure Socket(JSSE) este o colecție de pachete pentru schimbul securizat de informații pe Internet. Ei implementează versiunea Java a protocoalelor Secure Sockets Layer (SSL) și Transport Layer Security (TLS) și oferă mijloacele de a cripta datele, de a verifica integritatea mesajelor și de a se autentifica pe server și client (cel din urmă este opțional).
  • Java Speech API(JSAPI) include specificațiile JSGF (Java Speech Grammar Format) și JSML (Java Speech Markup Language). Acest pachet oferă capabilități pentru utilizarea tehnologiilor de vorbire în interfața cu utilizatorul. JSAPI este un API multiplatformă pentru sprijinirea recunoașterii comenzilor vocale, a sistemelor de introducere a vorbirii și a sintezei vorbirii. Consultați următoarea secțiune a articolului pentru mai multe detalii.
  • Java 3D este un API care oferă capabilități multiplatforme și scalabile pentru lucrul cu grafica 3D în aplicații Java. API-ul este organizat ca un set de interfețe orientate pe obiecte care se pliază într-un singur model de programare simplu, de nivel înalt.
  • Mecanism Facilitatea de metadate Permite dezvoltatorilor să definească atribute pentru clase, interfețe, câmpuri și metode, astfel încât să poată fi supuși unei manipulări speciale de către instrumente de dezvoltare, instrumente de implementare și biblioteci terțe în timpul execuției (vezi articolul).
  • API-ul Java Content Repository este un API pentru accesarea depozitelor de conținut în Java SE, indiferent de implementarea acestora. Astfel de depozite sunt sisteme de management al informațiilor la nivel înalt și sunt versiuni extinse ale depozitelor de date clasice.
  • Enumerări(enumerarea) este un tip de date care vă permite să descrieți diferite elemente de date ca un set tipizat de constante.
  • generice(tipuri generice) vă permit să creați clase cu parametri (tipuri abstracte) care sunt specificați în etapa de instanțiere. Consultați articolul pentru detalii și, de asemenea, consultați articolul despre modul în care tipurile generice facilitează lucrul cu colecțiile în Java SE 6.0.
  • Utilități Concurență este un set de clase care oferă funcționalitatea de nivel mediu cerută de obicei de aplicațiile de procesare paralelă.
  • API Java pentru procesarea XML(JAXP) este un API pe care aplicațiile Java îl pot folosi pentru a analiza și transforma documente XML, indiferent de procesorul XML utilizat. Acest lucru permite aplicațiilor să comute cu ușurință între diferite procesoare fără a schimba codul aplicației. La rândul său, tehnologia JAXB ( API Java pentru legarea XML) oferă capabilități pentru automatizarea maparii documentelor XML și a obiectelor Java.
  • API SOAP cu atașamente pentru Java(SAAJ) oferă dezvoltatorilor funcții pentru generarea și procesarea mesajelor în conformitate cu specificația SOAP 1.1, specificând SOAP cu atașamente. Vezi articolul pentru mai multe detalii).

Tehnologii J2EE:

  • Enterprise JavaBeans(EJB) este un model de componentă care simplifică dezvoltarea middleware prin furnizarea de servicii precum gestionarea tranzacțiilor, securitatea și conectivitate la baze de date.
  • Specificația portlet-ului definește un set de API-uri pentru construirea de portaluri în Java, acoperind aspecte precum agregarea și prezentarea informațiilor, personalizarea și securitatea (vezi articolul).
  • JavaMail este un API care oferă un set de clase abstracte care modelează sistemul de e-mail.
  • Serviciul de mesaje Java(JMS) este un API care acceptă crearea de aplicații portabile de mesagerie Java. Acesta definește un set comun de concepte de bază și strategii de programare pentru toate sistemele de mesagerie compatibile cu JMS.
  • JavaServer Faces(JSF) oferă un model de programare care vă ajută să construiți aplicații Web prin asamblarea paginilor din componente reutilizabile ale interfeței cu utilizatorul, legând acele componente la sursele de date și evenimentele generate de client la handlere de server. Pentru mai multe informații, consultați tutorialul în două părți și seria de articole din seria de coloane.
  • Pagini JavaServer(JSP) oferă dezvoltatorilor web mijloacele de a crea rapid și de a menține cu ușurință pagini web dinamice, multiplatforme, care separă interfața cu utilizatorul și generarea de conținut, astfel încât designerii să poată schimba marcajul fără a atinge conținutul generat dinamic (vezi tutorialul.
  • Biblioteca standard de etichete pentru paginile JavaServer(JSTL) este o colecție de etichete specializate care oferă un format standard pentru efectuarea acțiunilor cerute de multe aplicații Web. Consultați Actualizează-ți paginile JSP cu JSTL și seria din patru părți intitulată.
  • Servlet-uri Java extinde funcționalitatea serverelor Web prin furnizarea unei abordări multiplatformă, bazată pe componente, pentru construirea de aplicații Web, fără limitările de performanță ale CGI.
  • Arhitectura conectorului J2EE(JCA) oferă o arhitectură standard pentru conectarea aplicațiilor J2EE la sisteme de informație ale întreprinderii eterogene (EIS). Această arhitectură definește un set de mecanisme scalabile și securizate bazate pe tranzacții prin care furnizorii EIS pot furniza adaptoare de resurse standard pentru includerea într-un server de aplicații. Pentru mai multe informații, consultați articolele și manualul.
  • Specificația de management J2EE(JMX) definește un model de management al informațiilor pentru platforma J2EE. Acest model a fost special conceput pentru a interopera cu multe sisteme și protocoale de control. Conține instrumente standard pentru maparea la Common Information Model (CIM), la SNMP Management Information Base (MIB) și la modelul obiect Java folosind serverul rezident EJB J2EE Management EJB Component (MEJB).
  • Java Transaction API(JTA) este o implementare de nivel înalt și API independentă de protocol, care oferă programelor și serverelor de aplicații mijloacele de acces la tranzacții. Serviciul de tranzacții Java(JTS) definește o implementare a unui manager de tranzacții care acceptă JTA și implementează, la un nivel de bază, maparea la Serviciul de tranzacții cu obiecte (OTS 1.1) al OMG. Propagarea tranzacțiilor în JTS este implementată folosind protocolul Inter-ORB (IIOP). Vezi articolul pentru mai multe detalii.

Tehnologii care fac parte din J2ME:

  • Profilul dispozitivului de informații mobile(MIDP) este una dintre cele două configurații care alcătuiesc mediul de rulare Java pentru dispozitivele mobile cu resurse limitate. MIDP oferă funcționalități de bază pentru aplicații, inclusiv instrumente pentru crearea de interfețe cu utilizatorul, conectarea la resursele de rețea, stocarea locală a datelor și managementul ciclului de viață.
  • Configurarea dispozitivului conectat(CDC) este o infrastructură standardizată pentru construirea și implementarea aplicațiilor care pot fi accesate de pe multe dispozitive în rețea și încorporate.
  • Mobile 3D Graphics API pentru J2ME(M3G) este un API 3D interactiv ușor, care este un supliment pentru J2ME. Puteți citi mai multe despre el în seria în două părți.

Tehnologii Java și dezvoltare de aplicații web

Java a fost limbajul principal pentru dezvoltarea aplicațiilor web de mulți ani. În ultimii ani, au apărut multe cadre și biblioteci pentru a facilita crearea de aplicații Web Java, inclusiv aplicații interactive Web 2.0 bogate.

Consultați următoarele resurse pentru Java Web Development.

  • Această coloană prezintă Grails, un cadru modern pentru construirea de aplicații Web scrise în Groovy. Grails vă permite să combinați fără probleme codul Java scris anterior cu capacitatea de a utiliza un limbaj de scripting flexibil și dinamic. Pentru mai multe informații despre Groovy, consultați mai jos Care este relația Java cu limbajele dinamice și programarea funcțională?.
  • Ajax este o metodologie de programare care utilizează limbaje de scriptare la nivelul clientului pentru a comunica cu un server Web, astfel încât paginile să poată fi reîmprospătate rapid fără a fi nevoie să le reîncărcați complet. În această serie de articole, veți afla cum vă poate ajuta Ajax ca dezvoltator Java. Consultați developerWorks pentru mai multe informații.
  • JavaServer Faces (JSF) oferă un model de programare care vă ajută să construiți aplicații Web prin asamblarea paginilor din componente reutilizabile ale interfeței utilizator, asociind acele componente cu surse de date și evenimente generate de client cu handlere de server. Pentru mai multe informații, consultați tutorialul în două părți și seria de articole din seria de coloane.
  • Platforma Eclipse Web Tools (WTP) extinde popularul mediu de dezvoltare Eclipse prin adăugarea de instrumente pentru construirea de aplicații Web bazate pe tehnologii Java EE (vezi tutorialul).
  • Consultați developerWorks pentru multe alte materiale excelente pe aceste subiecte.

Tehnologii Java, SOA și servicii web

Arhitectura orientată pe servicii (SOA) este un model de componentă care leagă modulele funcționale ale unei aplicații (cunoscute ca Servicii de unde provine termenul Servicii web) prin interfețe și contracte strict descrise. Definițiile interfeței sunt independente de hardware-ul, sistemul de operare și limbajul de programare în care este implementat serviciul, menținând astfel o comunicare unificată între serviciile care sunt componente ale diferitelor sisteme. SOA este un exemplu de model de programare slab cuplat care oferă o alternativă la modelele clasice orientate pe obiecte strâns cuplate.

Create pe acest principiu, serviciile Web vă permit să descrieți regulile și procesele de afaceri în XML, astfel încât interacțiunea aplicațiilor să poată fi realizată indiferent de platformele și limbajele de programare utilizate. Tehnologiile XML promovează portabilitatea datelor și simplifică crearea mesajelor, în timp ce tehnologiile Java vă permit să scrieți cod portabil. XML și Java funcționează bine împreună, făcându-le combinația perfectă de tehnologii pentru construirea și implementarea serviciilor Web.

Pentru mai multe informații, citiți următoarele materiale:

  • Paginile și paginile DeveloperWorks vă pot ajuta să navigați în aceste tehnologii provocatoare.
  • În această serie, veți afla despre infrastructurile de servicii web Java și noile straturi funcționale construite pe deasupra acelor servicii.
  • Acest articol prezintă un stil elegant de proiectare a serviciilor web numit Representational State Transfer (REST) ​​și explică cum să utilizați Java pentru a construi servicii web RESTful.
  • Înțelegerea tehnologiei JAX-RPC (Java API-based RPC for Working with XML) este esențială pentru crearea de servicii web Java eficiente.
  • JAX-WS este următorul pas evident în evoluția JAX-RPC. O introducere practică a acestui nou API este oferită în tutorial.
  • Această serie este un ghid pentru arhitectura componentelor de serviciu (SCA), o specificație care descrie un model SOA pentru dezvoltarea de aplicații și sisteme.
  • Acest articol oferă o introducere în cadrul Service Data Objects, care simplifică modelul de date Java EE pentru construirea de aplicații SOA.

Ce legătură are Java cu limbajele dinamice și cu programarea funcțională?

Mulți dezvoltatori care încep cu Java au o experiență vastă cu alte limbaje de programare. În același timp, chiar și cei mai venerabili programatori admit că Java nu este limbajul ideal pentru rezolvare dintre toate problemele întâlnite în practică. Din fericire, cu suportul JVM, puteți profita din plin de scripturile dinamice și limbajele funcționale de astăzi atunci când dezvoltați aplicații pentru platforma Java. Flexibilitatea și dinamismul acestor limbaje se dovedesc a fi foarte utile la prototiparea și implementarea anumitor tipuri de aplicații.

Puteți citi mai multe despre posibilitățile de utilizare a limbajelor dinamice și funcționale în platforma Java în materialele, link-uri către care sunt prezentate mai jos.

  • Limbajul de scripting Groovy permite dezvoltatorilor Java să folosească cele mai familiare constructii de limbaj și biblioteci, oferind în același timp un mediu de dezvoltare flexibil și dinamic, care nu necesită compilare, simplifică sintaxa și acceptă scripting în cadrul aplicațiilor Java comune. O prezentare detaliată a capacităţilor acestui limbaj este oferită în articolele din serie.
  • Noul API de scripting din Java SE 6, care este compatibil cu Java SE 5 și conține un set mic de interfețe și clase, oferă o modalitate ușoară de a invoca scripturi scrise în zeci de limbi din codul Java. Cu acesta, puteți încărca și apela scripturi externe în timpul execuției, schimbând dinamic comportamentul aplicației dvs. Puteți citi mai multe despre acest API în seria din două părți intitulată.
  • Sunteți un susținător înfocat al programării funcționale? Apoi ar trebui să acordați atenție rubricii care vorbește despre Scala, un limbaj de programare pentru JVM care combină o abordare funcțională și orientată pe obiecte a dezvoltării.
  • VM-urile au suportat limbaje de programare alternative de mult timp. În articolele din coloană, puteți citi despre implementările JVM ale limbilor precum Rexx, Ruby, JavaScript, Python și altele.

Java și dezvoltare software liberă

Există nenumărate modalități de a construi biblioteci Java, seturi de instrumente, cadre, programe și servere de aplicații care deschid oportunități suplimentare pentru dezvoltatori de a folosi această platformă puternică. O serie de tehnologii gratuite au fost încorporate de-a lungul timpului în platforma Java, în timp ce altele au rămas populare în rândul dezvoltatorilor Java de-a lungul anilor, în unele cazuri acționând ca standarde de facto.

  • Apache Software Foundation (EN) reunește multe proiecte open source, majoritatea fiind dezvoltate cu tehnologia Java. Unii dintre membrii acestei familii de proiecte sunt enumerați mai jos.
    • Apache Struts este un cadru pentru construirea de aplicații Web care urmează arhitectura Model-View-Controller.
    • Apache Shale este un alt cadru modern pentru construirea de aplicații Web care moștenește de la Struts și se bazează pe tehnologia JSP (JavaServer Pages). Pentru o introducere în Shale, consultați articolele din serie.
    • Apache Ant este standardul de facto pentru automatizarea procesului de construire al aplicațiilor Java.
    • Apache Maven Build Tool a fost proiectat având în vedere cerințele proiectelor software moderne, cu interacțiuni dinamice între echipele de dezvoltare și dependență de multe componente susținute independent (vezi ghidul).
    • Apache Tomcat este un container web popular care acceptă servlet-uri și pagini server Java (JSP).
    • Proiectul Apache Geronimo se referă la crearea unui server de aplicații Java EE complet compatibil cu specificațiile, bazat pe tehnologie pur gratuită. Puteți citi mai multe despre Geronimo în acest articol și pe site-ul developerWorks pentru o mulțime de conținut util.
    • Apache Derby este un server de baze de date relaționale implementat complet în Java. O introducere în Derby este oferită în articol.
  • Eclipse (EN) este o platformă de dezvoltare deschisă și independentă și un set de instrumente de bază pentru construirea de software. Este scris în Java și oferă o infrastructură de plug-in pentru a facilita dezvoltarea, integrarea și utilizarea instrumentelor software. IBM este membru fondator al Eclipse.org și participă activ la consiliul de conducere și subcomitetele proiectului. Puteți citi despre unele dintre tehnologiile componente ale platformei Eclipse care vizează crearea de aplicații Java în următoarele materiale:
    • AspectJ este o extensie orientată pe aspecte a limbajului Java care poate fi utilizată pentru a implementa modular funcționalități transversale, cum ar fi înregistrarea în jurnal sau gestionarea excepțiilor.
    • Standard Widget Toolkit (EN) (SWT) este un set de instrumente care vă permite să valorificați puterea sistemului de operare pentru a crea elemente de interfață cu utilizatorul într-un mod eficient și portabil.
    • Mylyn este un sistem puternic de gestionare a locurilor de muncă pentru utilizatorii Eclipse. Pentru îndrumări detaliate, consultați articolele și, cunoscută anterior sub numele de „Acegi Security for Spring”, este o soluție de securitate puternică și flexibilă pentru aplicațiile de întreprindere construite pe baza cadrului Spring. Este tratat în detaliu în patru articole din serie.
  • Sun Microsystems a lansat, de asemenea, următoarele proiecte comunitare pe java.net:
    • Openjdk

Cum să dezvolți abilitățile de programare Java?

Există două moduri principale în care vă puteți dezvolta abilitățile de programare Java: urmați un curs de formare dedicat (cu opțiuni de certificare) sau învățați Java pe cont propriu, exersând codificare. Cursurile de formare nu numai că vă permit să învățați din experiența unor dezvoltatori calificați, ci oferă și posibilitatea de a obține un certificat care poate convinge un potențial angajator că aveți abilitățile necesare pentru a face față provocărilor tehnice cu care ne confruntăm. Procedând astfel, vă puteți aprofunda cunoștințele în diverse domenii ale Java, experimentând pe cont propriu și folosind toate resursele disponibile. Indiferent de calea pe care o alegeți, următoarele resurse vă vor ajuta.

  • Ghiduri și articole
    • DeveloperWorks are o colecție extinsă care este a doua după codificarea dvs. în ceea ce privește utilitatea în învățarea Java.
    • Articolele sunt în serie și sunt excelente pentru a vă îmbunătăți abilitățile de limbaj Java.
    • Utilizarea teoriei designului pentru a crea aplicații în lumea reală este discutată în articolele din serie.
    • Dezvoltatorii Java cu experiență pre-construiesc instrumente în aplicațiile lor pentru a le depana și a le testa. DeveloperWorks are mai multe articole din serie - Jocuri în timp real bazate pe Eclipse pentru învățarea programarii Java. Pentru o introducere în CodeRuler, consultați Cucerirea regatelor medievale cu CodeRuler.
  • Cursuri de pregătire tehnică IBM
    • Bucurați-vă de o mare varietate de cursuri Java online, față în față și multimedia de la IBM Global Services.
  • Certificare
    • Puteți susține mai multe examene pentru a obține certificări care vă demonstrează abilitățile de programare Java. Pentru cursuri de certificare, consultați site-ul web de certificare Java.
    • IBM vă împuternicește abilitățile în tehnologiile legate de Java, cum ar fi construirea de aplicații de întreprindere pentru WebSphere, software Rational, DB2, XML și SOA.
  • Forumuri
    • Moderat de experți cu ani de experiență în tehnologia Java, acesta este cel mai interactiv mod de a învăța limbajul Java.

Produse și tehnologii IBM pentru dezvoltatorii Java

IBM este unul dintre liderii în aplicarea practică a tehnologiilor Java. Următoarele sunt link-uri către unele dintre produsele și tehnologiile IBM disponibile pentru dezvoltatori pentru platforma Java.

  • Produse descărcabile gratuit:
    • (Java Developer Kit) este o colecție de instrumente pentru construirea și testarea applet-urilor și aplicațiilor pentru Java SE și Java ME pe o varietate de sisteme de operare populare, inclusiv Windows, Linux și AIX.
    • (IBM Development Package for Eclipse) este un set de instrumente de dezvoltare neacceptat bazat pe Eclipse, care vă permite să construiți și să rulați aplicații în propriul mediu de dezvoltare standard.
    • : Puteți descărca pachete software gratuite Eclipse de la developerWorks, inclusiv produsele paralele Calisto și Europa.
    • este un depozit virtual de tehnologii Java promițătoare dezvoltate la IBM. Acestea includ API-uri, IDE-uri, kituri de dezvoltare, implementări de referință și utilitare. Mai jos sunt link-uri către unele dintre tehnologiile prezentate în alphaWorks.
    • ... Acest utilitar vă ajută să analizați și să generați scripturi Ant testabile pentru proiecte de construcție dezvoltate cu Eclipse, Rational și WebSphere IDE pentru platformele Java EE și SCA.
    • (IBM Pattern Modeling and Analysis Tool for Java Garbage Collector). Acest utilitar analizează fișierele de urmărire GC detaliate, analizează utilizarea memoriei heap (heap) și recomandă reglarea aplicației pe baza rezultatelor simulării memoriei. (Secure Shell Library pentru Java) este o implementare ușoară a protocolului SSH-2 dezvoltat de Internet Engineering Task Force (IETF). Oferă instrumente de autentificare sigure și alte servicii securizate care operează într-o rețea nesecurizată. vă permite să consolidați și să transformați datele, crescând astfel productivitatea, agilitatea și productivitatea afacerii dvs., oferind acces rapid la informațiile de care aveți nevoie.

În acest ghid, vom acoperi tot ce trebuie să știți înainte de a începe să învățați programare activată Java. Veți afla despre capacitățile platformei, despre utilizările acesteia și despre cum să începeți să învățați corect Java.

Ce este limbajul de programare Java?

În 1991, Green Team, o divizie a Sun Microsystems, condusă de James Gosling, a creat un limbaj pentru programarea dispozitivelor electronice de larg consum. Pe vremea aceea se numea Stejar („Stejar”). De ce "Stejar"? Pur și simplu pentru că acest copac a crescut în afara ferestrei biroului lui Gosling.

Echipa Verde a demonstrat utilizarea Oak pe un televizor interactiv. Dar pentru televiziunea digitală prin cablu din acei ani, această tehnologie era prea avansată. În același timp, Internetul câștiga popularitate, pentru care noul limbaj de programare era cel mai potrivit.

După un timp, noua limbă a fost redenumită Green, iar după aceea - în Java, în cinstea cafelei din insula Java. Prin urmare, logo-ul Java înfățișează o cană de cafea.

În timpul dezvoltării Java, C/C++ a fost popular, așa că Gosling a făcut sintaxa limbajului similară cu C/C++ și a implementat principiul „ scrie o dată - rulează oriunde". În 1995, Sun Microsystems a lansat prima versiune oficială a Java. Și, în același timp, a fost anunțat că Java va fi inclus în browserul Netscape Navigator.

În 2010, Sun Microsystems, împreună cu limbajul de programare Java, a fost achiziționat de Oracle Corporation.

Istoricul versiunilor Java

  1. Iunie 1991 - începerea proiectului de dezvoltare limbaj de programare Java.
  2. JDK 1.0 - ianuarie 1996.
  3. JDK 1.1 - februarie 1997.
  4. J2SE 1.2 - decembrie 1998.
  5. J2SE 1.3 - mai 2000.
  6. J2SE 1.4 - februarie 2002.
  7. J2SE 5.0 - septembrie 2004.
  8. Java SE 6 - decembrie 2006.
  9. Java SE 7 - iulie 2011.
  10. Java SE 8 - 18 martie 2014.
  11. Java SE 9 - 21 septembrie 2017.

Funcții ale limbajului de programare Java

Java este un limbaj multiplatform

Cod Java scris pe o singură platformă ( adică sistemul de operare) poate fi rulat neschimbat pe alte platforme.

Pentru a rula Java, mașina virtuală Java ( Mașină virtuală Java, JVM). JVM-ul procesează codul de octeți, iar apoi procesorul procesează codul primit de la JVM. Toate mașinile virtuale funcționează într-un mod similar, așa că același cod funcționează la fel pe toate sistemele de operare, ceea ce face din Java un limbaj de programare multiplatformă.

Limbajul de programare orientat pe obiecte

Există diferite stiluri de programare, iar unul dintre cele mai populare este programarea orientată pe obiecte. Cu această abordare, o problemă complexă este împărțită în altele mai mici prin crearea de obiecte. Acest lucru face codul reutilizabil.

Funcțiile orientate pe obiecte se găsesc în multe limbaje de programare, inclusiv Java, Python și C++. Dacă sunteți serios să învățați programarea, abordarea orientată pe obiect merită încorporată în curriculum-ul dvs.

Java este rapid

Versiuni timpurii limbaj de programare Java a fost adesea criticat pentru că este lent. Dar astăzi situația s-a schimbat dramatic. Versiunile mai noi de JVM rulează mult mai repede, iar procesoarele care le interpretează devin din ce în ce mai rapide.

Java este unul dintre cele mai rapide limbaje de programare de astăzi. Codul Java bine optimizat rulează aproape la fel de repede ca limbajele de programare de nivel scăzut precum C / C ++ și mult mai rapid decât Python, PHP etc.

Java este o platformă sigură

Java este:

  • o platformă sigură pentru dezvoltarea și lansarea aplicațiilor;
  • oferă instrumente pentru gestionarea automată a memoriei, ceea ce reduce vulnerabilitatea codului;
  • asigură transmisia sigură a datelor.

Bibliotecă de bază extinsă

Unul dintre motivele pentru care Java este utilizat pe scară largă este imensa bibliotecă standard. Conține sute de clase și metode din diverse pachete pentru a ușura viața dezvoltatorilor. De exemplu,

java.lang sunt funcții avansate pentru șiruri de caractere, matrice etc.

java.util este o bibliotecă pentru lucrul cu structuri de date, expresii regulate, data și ora etc.

kava.io este o bibliotecă pentru introducerea/ieșirea fișierelor, gestionarea excepțiilor etc.

Utilizarea platformei Java

Înainte de a învăța Java programare de la zero, trebuie să știți că peste 3 miliarde de dispozitive din întreaga lume rulează pe această platformă. La ce mai exact il poti folosi:

  1. Aplicații Android - Pentru dezvoltarea aplicațiilor Android, limbajul de programare Java este adesea folosit împreună cu Android SDK ( din engleză software development kit - kit de dezvoltare software).
  2. Aplicații web - Java este folosit pentru a construi aplicații web folosind programe de pe server, framework Struts și JSP. Unele aplicații web populare scrise în Java includ Google.com, Facebook.com, eBay.com, LinkedIn.com.

Este de remarcat faptul că aceste site-uri nu sunt neapărat scrise exclusiv în Java și pot folosi și alte limbaje de programare.

  1. Dezvoltare de software- programe precum Eclipse, OpenOffice, Vuze, MATLAB și multe altele sunt scrise în Java.
  2. Procesarea datelor mari - Pentru procesarea datelor mari, puteți utiliza cadrul Hadoop scris în Java.
  3. Sisteme de tranzacționare- utilizarea platformei Platforma de tranzacționare Oracle Extreme Java, puteți scrie programe pentru tranzacționare.
  4. Dispozitive încorporate- Miliarde de dispozitive sunt alimentate de tehnologia Oracle Java Embedded astăzi, cum ar fi televizoare, carduri SIM, playere Blu-ray și multe altele.

De asemenea programare activată Java este folosit pentru a dezvolta jocuri, aplicații științifice ( de exemplu, pentru procesarea limbajului natural) și în multe alte domenii.

Terminologie Java pe care ar trebui să o cunoașteți

Java este o colecție de tehnologii ( limbaj de programare și platformă de calculator) conceput pentru a crea și rula software. Cu toate acestea, termenul Java este adesea folosit pentru a se referi la limbajul de programare în sine.

Limbaj de programare Java este un limbaj de programare larg, cu scop general, multiplatformă, orientat pe obiecte.

Java 9 este cea mai recentă versiune de Java la momentul scrierii acestui articol.

Java EE, Java Me și Java SE — Aceste nume se referă la Java Enterprise Edition, Micro Edition și, respectiv, Standard Edition.

Java EE vizează aplicațiile care rulează pe servere. Java ME este proiectat pentru dispozitive cu putere limitată, cum ar fi dispozitivele încorporate. Java SE este ediția standard Java pentru scrierea programelor obișnuite.

Dacă ești nou la Programare Java, vă recomandăm să începeți cu Java SE.

JVM - Java Virtual Machine (" mașină virtuală Java") Este un program care permite unui computer să ruleze programe scrise în Java.

JRE - Java Runtime Environment (" runtime java") Include JVM, bibliotecile corespunzătoare și alte componente necesare pentru a rula programe. Dar nu există un compilator, un depanator sau alte instrumente de dezvoltare în JRE.

JDK - Kit de dezvoltare Java (kit Dezvoltator Java) conține JRE și alte instrumente de dezvoltare, cum ar fi compilatoare, depanare etc.

Cum să rulați Java pe sistemul dvs. de operare

Cum să rulați Java pe Mac OS

Iată ce trebuie să faceți pentru Java programare de la zeroși instalări de platforme pe Mac OS X sau macOS:

  1. Descărcați cea mai recentă versiune Java ( JDK) cu Pagini de descărcare Java SE.
  2. Faceți dublu clic pe fișierul DMG descărcat și urmați instrucțiunile programului de instalare.
  3. Pentru a verifica instalarea, deschideți un terminal și introduceți următoarea comandă:

versiunea javac

Dacă Java este instalat corect, versiunea programului ( de exemplu javac 1.8.0_60).

Următorul pas este să instalați IDE-ul ( mediu de dezvoltare integrat) pentru a scrie și a rula cod Java. Vom instala versiunea gratuită a IntelliJ IDEA și vom rula Java pe ea. Iată ce trebuie să faci pentru asta:

  1. Mergi la Pagina de descărcare a IntelliJși descărcați ediția gratuită pentru comunitate.
  1. Deschideți fișierul DMG descărcat și urmați instrucțiunile de instalare. Pentru acces rapid, puteți muta IntelliJ IDEA în folderul Aplicații.
  2. Deschideți IntelliJ IDEA. Selectați opțiunea „Nu importați setările” (“ Nu importați setările") Și faceți clic pe "Ok". Apoi acceptați politica de confidențialitate Jetbrains făcând clic pe butonul „Accept”.
  3. Acum puteți personaliza interfața pentru dvs. De asemenea, puteți sări peste acest pas și să lăsați totul ca implicit. Dacă nu sunteți sigur, săriți peste acest pas făcând clic pe butonul Omiteți toate și setați valorile implicite. Omite totul și setează setările implicite»).


  1. Programul vă va afișa o pagină de bun venit. Faceți clic pe butonul „Creați un nou proiect”. Creați un nou proiect»).
  2. În fereastra următoare, selectați „Java” în panoul din stânga și faceți clic pe „Nou” în partea de sus a ferestrei programului pentru a selecta „JDK”. Aici trebuie să selectați locația în care ați instalat JDK-ul și apoi faceți clic pe Următorul.


  1. Veți avea opțiunea de a crea un proiect din șablon ("Creați proiect din șablon"). Ignorați-l și faceți clic pe butonul Următorul.
  2. În pasul următor al instalării limbaj de programare Java introduceți un nume pentru proiect și faceți clic pe Terminare.
  3. În panoul din stânga, veți vedea proiectul dvs. Dacă panoul nu este vizibil, accesați meniu Vizualizări> Instrument Windows> Proiect.
  4. Accesați Hello> New> Java și setați numele clasei. L-am numit Primul.


  1. Pentru a rula programul pe care tocmai l-ați scris, mergeți la Run> Run ... Faceți clic pe First ( adică numele fișierului pe care l-am creat


Cum să rulați Java pe Linux

Pentru a rula exemple din lecții de programare de la zero Java pe Linux va avea nevoie de kitul de dezvoltare JAVA SE ( JDK) și IDE pentru a vă dezvolta proiectele. Urmați instrucțiunile pas cu pas pentru a începe să utilizați Java.

Instalați Java

  1. Deschideți un terminal și tastați următoarea comandă pentru a instala Java:

    sudo add-apt-repository ppa: webupd8team / java


    sudo apt update; sudo apt install oracle-java8-installer

  1. Acceptați acordul de licență și termenii de utilizare făcând clic pe „OK” și, respectiv, „Da”.
  2. Ai instalat Java. Pentru a verifica dacă instalarea a avut succes, introduceți următoarea comandă într-un terminal:

versiunea java

Dacă este afișată versiunea curentă, instalarea a avut succes. Dacă nu, verificați cu Pagina de ajutor Oracle.

Instalarea IntelliJ IDEA

  1. Mergi la.


  1. Descărcați ediția gratuită pentru comunitate făcând clic pe butonul Descărcare.
  2. După descărcare schimba directorul din terminalîn directorul de descărcare și extrageți fișierul tar Java în folderul / opt cu următoarea comandă:

sudo tar xf .tar.gz -C / opt /

  1. După despachetare, schimbați directorul în folderul bin al programului IntelliJ IDEA:

    cd / opt / / cos

  2. Pentru a porni IDE-ul, introduceți următoarea comandă:
  3. Selectăm „Nu importați setările” („ Nu importați setările") Și faceți clic pe "OK". După aceea, acceptăm politica de confidențialitate Jetbrains făcând clic pe butonul „Accept”.
  4. Acum pentru trecere cursuri de programare Java, puteți personaliza interfața pentru dvs. Creați o comandă rapidă pe desktop pentru acces rapid la program. După aceea, pentru a lansa IDE-ul, faceți clic pe „Next” în toți pașii următori.
  5. Programul va afișa o pagină de bun venit. Faceți clic pe „Creați un proiect nou” Creați un nou proiect»).
  6. În fereastra următoare, selectați Java în panoul din stânga și asigurați-vă că Java este selectat în rândul Project SDK. Dacă nu, atunci selectați locația în care ați instalat JDK: / usr / lib / jvm / java-8-oracle.


  1. Apăsați „Următorul” de două ori și creați un proiect.
  2. În pasul următor, introduceți un nume pentru proiect și faceți clic pe Terminare. Acum veți vedea proiectul dvs. în panoul din stânga. Dacă acest panou nu este vizibil, mergeți la meniu Vizualizări> Instrument Windows> Proiect.
  3. Adăugați o nouă clasă Java. Selectați src în panoul din stânga cu clic dreapta și accesați New> Java Class. Setați numele clasei. Nu trebuie să existe spații în numele clasei.


  1. Scrieți codul Java și salvați proiectul.
  2. Pentru a rula programul, accesați Run> Run ... Faceți clic pe HelloWorld ( Denumirea proiectului) - programul va compila fișierul și îl va rula.


Cum să rulați Java pe Windows (XP, 7, 8 și 10)

Pentru stăpânirea Java fundamentale ale programarii iar rularea platformei pe Windows va necesita un kit de dezvoltare JAVA SE (JDK) și IDE pentru a dezvolta proiecte. Urmați instrucțiunile pas cu pas de mai jos:

Instalarea Java

  • Mergi la pagina de descărcare Kit de dezvoltare Java Standard Edition.
  1. În secțiunea Kit de dezvoltare Java SE din partea de sus a tabelului, faceți clic pe Acceptare acordul de licență ( Acceptați acordul de licență"). Apoi faceți clic pe linkul Windows (x64) pentru un sistem de operare pe 64 de biți sau pe Windows (x86) pentru un sistem de operare pe 32 de biți.

  1. După descărcare, rulați fișierul de instalare și urmați instrucțiunile care apar pe ecran. Faceți clic pe " Următorul". Selectați toate funcțiile făcând clic pe „ Această caracteristică va fi instalată pe hard disk local„Și copiați locația de instalare ( este evidentiata cu galben) în „Notepad”, apoi faceți clic pe „ Următorul».


  1. În timpul procesului de instalare, vi se va solicita să instalați JRE. Faceți clic pe Următorul și apoi pe Terminare pentru a finaliza instalarea.
  2. Acum trebuie să editați variabila PATH. Mergi la Panou de control> Sistem și securitate> Sistem... În panoul din stânga, selectați „ Parametri suplimentari de sistem ".

  1. Faceți clic pe " Variabile de mediu"... la capitolul " Variabile de sistem" găsiți variabila PATH și în fereastra următoare faceți clic pe „Edit”.

  1. Selectați tot textul din „ Valoare variabila "și copiați-l într-un fișier text separat. Acest lucru va facilita editarea și verificarea erorilor. Vedeți dacă textul copiat conține linia: C: ProgramData Oracle Java javapath; ... Dacă da, puteți trece la pasul următor. Dacă nu, atunci lipiți locația de instalare copiată anterior la începutul variabilei și adăugați bin la sfârșitul liniei astfel: C: Program Files (x 86) Java jdk 1.8.0_112 bin; Vă rugăm să rețineți că versiunea dvs. JDK (jdk 1.8.0_112) poate fi diferită. Copiați valoarea variabilei și inserați-o în fereastra PATH.


  1. Faceți clic pe " Bine„Pentru a vă salva modificările.
  2. Pentru a verifica dacă platforma este instalată corect pt introducere în programare Java, deschis Linie de comanda tastând cmd în bara de căutare Windows sau prin comanda „Run ...” ( Windows - R). Introduceți comanda java -version. Dacă este afișată versiunea Java curentă, instalarea a avut succes. Dacă nu, verificați cu Pagina de ajutor Oracle.

Instalarea IntelliJ IDEA

  1. Mergi la Pagina de descărcare a IntelliJ IDEA.
  2. Descărcați ediția gratuită pentru comunitate făcând clic pe Descărcare.


  1. Odată descărcat, rulați fișierul de configurare și urmați instrucțiunile care apar pe ecran. Apoi creați o comandă rapidă pe desktop pentru 64 de biți și adăugați asocieri cu extensia .java. Faceți clic pe „Următorul” și continuați cu instalarea.


  1. Odată instalat, deschideți IntelliJ IDEA făcând clic pe pictograma de pe desktop.
  2. Selectați „Nu importați setările” (“ Nu importați setările") Și faceți clic pe "OK". După aceea, acceptăm politica de confidențialitate a Jetbrains făcând clic pe „Accept”.
  3. Acum puteți personaliza interfața pentru dvs. De asemenea, puteți sări peste acest pas și să lăsați totul ca implicit făcând clic pe butonul Omiteți toate și Setați valorile implicite.
  4. Programul va afișa o pagină de bun venit. Faceți clic pe „Creați un proiect nou” Creați un nou proiect»).


  1. În fereastra următoare, selectați „Java” în panoul din stânga și faceți clic pe „Nou” în partea de sus a ferestrei programului pentru a selecta JDK. Aici trebuie să selectați locația în care a fost instalat JDK-ul în timpul instalării Java și apoi să faceți clic pe „Next”.
  2. IntelliJ IDEA va găsi JDK-ul și îl va recunoaște. Nu trebuie să verificați alte opțiuni, doar faceți clic pe Următorul.
  3. Pe ecranul următor, introduceți un nume pentru proiect: HelloWorld și faceți clic pe Terminare. Dacă programul spune că directorul nu există, faceți clic pe „OK”. Dacă nu vedeți panoul din stânga, accesați Vizualizări> Instrument Windows> Proiect.
  4. Pentru a seta numele clasei, selectați folderul src din panoul din stânga. Faceți clic dreapta pe el, accesați Nou> Java și dați un nume clasei. Nu trebuie să existe spații în numele clasei.


  1. Scrieți codul și salvați proiectul Java lectie de programare.
  2. Pentru a rula programul, mergeți la Run> Run ... Faceți clic pe HelloWorld - programul va compila fișierul și îl va rula.


Primul tău program Java

Pentru a prezenta utilizatorilor noul limbaj de programare, utilizați programul Hello World. Acesta este un program simplu care tipărește cuvintele Hello, World! În această secțiune, vă vom învăța cum să scrieți acest program Java folosind IntelliJ IDEA.

  1. Deschideți IntelliJ IDEA.
  2. Accesați Fișier> Nou> Proiect ...> Java ( în bara de navigare din stânga).
  3. Setați numele proiectului de la curs de programare J a va. Îi vom numi Hello World și facem clic pe Terminare.
  4. Acum trebuie să creăm o nouă clasă Java.
  5. Selectați folderul src din panoul din stânga, apoi accesați Fișier> Nou> Clasă Java și denumiți noua clasă HelloWorld.
  6. Copiați următorul cod în HelloWorld.java și salvați-l.

clasă publică HelloWorld (principal public static void (Argumente șir) (


// afișează „Hello, World!”


System.out.println ("Bună ziua, lume!");

  1. Faceți clic pe butonul de pornire ( Alerga). Dacă totul este în ordine, vei vedea inscripția Hello, World!

Cum învăț Java?

Documentație oficială Java

Oracle, compania care deține Java, publică tutoriale de calitate. Documentația oficială acoperă toate caracteristicile Java și este actualizată în mod regulat.

Notă: singurul negativ este că documentația oficială Java nu este întotdeauna scrisă în cel mai simplu limbaj.

Dacă chiar vrei să înveți programare activată Java, cumpără o carte bună. Desigur, 1000 de pagini nu pot fi citite într-o zi. Dar un tutorial bun te va ajuta să înveți programarea.

Java: Ghidul complet (ediția a 10-a)

O carte excelentă pentru cei care abia încep să învețe Java. Cea mai recentă ediție include toate caracteristicile versiunii Java 8.

Cartea acoperă tot ce trebuie să știți despre programarea Java, inclusiv sintaxa, cuvintele cheie și elementele fundamentale de programare, precum și biblioteca Java API, applet-urile Java și multe altele.

Filosofia Java (ediția a patra)

Dacă treceți la Java dintr-un alt limbaj de programare, această carte este pentru dvs. Dacă porniți de la zero, cel mai bine este să îl citiți împreună cu altul.

Java 8. Referință de buzunar: Primul ajutor pentru programatorii Java

Această carte oferă răspunsuri clare la întrebările care apar atunci când se preda lui J programare ava de la zero... Ea prezintă pe scurt toate conceptele de bază ale Java (inclusiv Java 9). Nu doriți să răsfoiți sute de pagini căutând linia potrivită? Cumpără această carte.

În loc de o concluzie

Dacă începi să înveți Java, nu te vei înșela - este un limbaj de programare promițător, plin de o mare varietate de posibilități.

Înainte de a începe să înveți Java, iată câteva sfaturi:

  • Nu citi articole tutoriale și exemple ca un roman. Singura modalitate de a deveni un programator bun este să scrieți mult cod.
  • Dacă migrați dintr-un alt limbaj de programare (de exemplu, C #), nu trebuie să scrieți cod în stil C #.
  • Găsiți comunități Java online. După ce ați învățat cum să scrieți programe Java simple, căutați site-uri și forumuri Java populare. Încercați să rezolvați problemele pe care le au alți programatori. Aceasta este o modalitate excelentă de a vă extinde propriile cunoștințe. În plus, dacă ai probleme, vei ști unde să ceri ajutor.

Sperăm că acest articol vă va împinge spre învățarea Java și vă va ajuta să începeți primele programe.

Traducerea articolului „ Învață programarea Java. Ghidul definitiv”A fost pregătit de echipa prietenoasă de proiect

Vom vorbi despre sintaxa Java de bază pentru începători. Sintaxa unui limbaj de programare este un set de reguli care guvernează modul în care este scris și interpretat...

limbajul Java. Introducere.

Multă vreme, a fost greu de imaginat o revistă de computer fără un articol despre limbajul Java. Chiar și ziare și reviste populare precum The New York Times, The Washington Post și Business Week au scris despre el.

Este imposibil să ne amintim că National Public Radio a dedicat vreodată un program de zece minute unui limbaj de programare. Bun sau rău depinde de punctul de vedere. Și investiția de 100 de milioane de dolari în producția de software creat folosind un limbaj de programare specific?! Companiile de televiziune CNN, CNBC și alte mass-media au vorbit și încă vorbesc despre cum poate și va face limbajul Java.

Cu toate acestea, această carte este pentru programatori serioși și, din moment ce Java este un limbaj de programare serios, avem multe despre care să vorbim. Deci, nu ne vom scufunda în analiza promisiunilor publicitare și nu vom încerca să aflăm ce este adevărat și ce este ficțiune în ele. În schimb, vom descrie Java ca un limbaj de programare suficient de detaliat (inclusiv, bineînțeles, caracteristicile care îi permit să fie folosit pentru lucrul pe Internet, ceea ce, de fapt, a provocat atât de mult hype publicitar). După aceea, vom încerca să separăm realitatea de fantezie explicând ce poate și ce nu poate face limbajul Java.

La început, a existat o prăpastie între promisiunile publicitare și posibilitățile reale ale limbajului Java. Pe măsură ce s-a maturizat, tehnologia a devenit mai stabilă și mai fiabilă, iar așteptările au scăzut la un nivel rezonabil. Java este acum din ce în ce mai folosit pentru a crea „middleware” care menține comunicarea între clienți și resursele serverului (cum ar fi bazele de date).

Deși aceste aplicații importante nu sunt copleșitoare, limbajul Java s-a dovedit a fi cel mai util în acest domeniu datorită independenței mașinii, multithreading-ului și capabilităților de programare în rețea. În plus, Java a preluat conducerea în sistemele încorporate, devenind standardul de facto pentru dispozitive portabile, chioșcuri virtuale, computere de bord și altele asemenea. Cu toate acestea, primele încercări de a rescrie programe larg răspândite pentru computerele personale în Java au fost eșuate - aplicațiile rezultate s-au dovedit a fi cu putere redusă și lente. Odată cu apariția noii versiuni, unele dintre aceste probleme au fost rezolvate și, totuși, trebuie recunoscut că utilizatorii, în general, sunt complet indiferenți față de limba în care sunt scrise programele pe care le-au achiziționat. Credem că principalele beneficii ale limbajului Java vor veni din crearea de noi tipuri de dispozitive și aplicații, mai degrabă decât din rescrierea programelor existente.

Limbajul Java ca instrument de programare

Cum limbajul de programare Java și-a depășit promisiunile publicitare. Este, fără îndoială, unul dintre cele mai bune limbaje disponibile pentru programatorii serioși. Java are potențialul de a fi un limbaj de programare grozav, dar probabil că este prea târziu acum. Când apare un nou limbaj de programare, apare imediat problema urâtă a compatibilității cu software-ul creat anterior. Mai mult decât atât, chiar dacă modificările acestor programe pot fi făcute fără a interfera cu textul lor, este dificil pentru creatorii unui limbaj care a fost atât de călduros primit de public, precum Java, să spună direct: „Da, poate că am făcut o greșeală în dezvoltarea versiunii X, dar versiunea Y va fi mai bună.” Ca urmare, în așteptarea unor îmbunătățiri ulterioare, trebuie să precizăm că structura limbajului Java nu se va schimba semnificativ în viitorul apropiat.

Întrebarea evidentă este: „ Cum ați îmbunătățit limbajul Java?„Se pare că acest lucru s-a făcut nu prin îmbunătățirea limbajului de programare în sine, ci prin schimbarea radicală a bibliotecilor de programe scrise în limbajul Java. Sun Microsystems a schimbat totul: începând cu numele funcțiilor individuale ale bibliotecii (făcându-le mai semnificative) și metodele de lucru ale modulelor grafice (schimbarea modului în care gestionăm evenimentele și rescrierea parțială a programelor de lucru) și terminând cu crearea de noi caracteristici ale limbajului, cum ar fi instrumente de imprimare, care nu erau disponibile în Java 1.0, rezultând într-un platformă de programare mai utilă decât toate versiunile anterioare ale limbajului Java.

Microsoft și-a lansat propriul produs numit J++, care are legătură cu limbajul Java. J++ este interpretat de o mașină virtuală Java (Mașină virtuală Java) atunci când se execută bytecode, dar limbile au interfețe diferite față de codurile externe. Limbile J++ și Java au aproape aceeași sintaxă. Cu toate acestea, Microsoft a creat constructii de limbaj suplimentare. Toate au o valoare destul de dubioasă, cu excepția API-ului Windows. Pe lângă faptul că aceste limbaje au aceeași sintaxă, bibliotecile lor de bază (șiruri, utilități, instrumente de programare în rețea, instrumente multithreading, biblioteci de matematică etc.) sunt în esență aceleași.

Cu toate acestea, bibliotecile grafice, interfața cu utilizatorul și accesul la obiect la distanță sunt complet diferite între aceste limbi. În prezent, Microsoft nu mai acceptă J ++, după ce a dezvoltat un nou limbaj, C #, care are multe în comun cu Java, dar folosește o mașină virtuală diferită. Această carte nu descrie J++ sau C #.

Avantajele limbajului Java

1) Unul dintre principalele avantaje ale limbajului Java este independență față de platforma pe care rulează programele: Același cod poate fi rulat sub Windows, Solaris, Linux, Machintosh și multe altele.
Acest lucru este cu adevărat necesar atunci când programele sunt descărcate de pe Internet pentru a fi executate ulterioare în diferite sisteme de operare.

2) Un alt avantaj este că sintaxa limbajului Java este similară cu sintaxa limbajului C++ și nu este dificil pentru programatorii care cunosc limbajele C și C++ să o învețe... Adevărat, pentru programatorii care cunosc limbajul Visual Basic, această sintaxă poate fi neobișnuită.

Dacă nu ați programat niciodată în C++, este posibil ca unii dintre termenii folosiți în această secțiune să nu vă fie clari. În acest caz, îl puteți sări peste el. Până când ajungeți la sfârșitul capitolului 6, acești termeni vă vor deveni familiari.

3) De asemenea, Java - limbaj complet orientat pe obiecte, chiar mai mult decât C++... Toate entitățile din Java sunt obiecte, cu excepția câtorva tipuri primitive, cum ar fi numerele. (Deoarece este ușor să dezvoltați proiecte complexe cu programare orientată pe obiecte, aceasta înlocuiește programarea structurată mai veche. Dacă nu sunteți familiarizat cu programarea orientată pe obiecte, capitolele 3-6 vă vor oferi tot ce trebuie să știți despre aceasta.)

Cu toate acestea, nu este suficient să dezvoltați un alt dialect, ușor îmbunătățit, al limbajului C++. Este esențial important că este mai ușor să dezvoltați programe fără erori în Java decât în ​​C++. De ce? Dezvoltatorii Java s-au gândit mult timp de ce programele scrise în C++ sunt atât de predispuse la erori. Ei au oferit limbajului Java mijloacele de a elimina însăși posibilitatea de a crea programe care ar ascunde cele mai frecvente erori. Pentru a face acest lucru, limbajul Java a făcut următoarele.

4) A fost exclusă posibilitatea alocării și eliberării explicite a memoriei.
Memoria Java este recuperată automat prin colectarea gunoiului. Programatorul este garantat împotriva erorilor legate de utilizarea greșită a memoriei.

5) S-au introdus matrice adevărate și aritmetica pointerului interzisă.
Acum, programatorii, în principiu, nu pot șterge datele din memorie din cauza utilizării necorespunzătoare a pointerilor.

6) A fost eliminată posibilitatea confundării operatorului de atribuire cu operatorul de comparare a egalității.
Acum nici măcar nu puteți compila expresia if (intries = 3). ... ... (Programatorii Visual Basic s-ar putea să nu observe deloc nicio problemă aici, deoarece această eroare este sursa majorității neînțelegerilor în C și C ++).

7) Moștenirea multiplă este exclusă. Acesta a fost înlocuit cu un nou concept - o interfață împrumutată din limbajul Objective C.
Interfața oferă programatorului aproape tot ceea ce poate obține programatorul din moștenirea multiplă, evitând în același timp complexitatea gestionării ierarhiilor de clasă.

Caracteristicile limbajului Java

Simplu
Interpretat
Distribuit
De încredere
Sigur
Independent de mașină
Orientat obiect
Performanta ridicata
Multifile
Dinamic
Arhitectura computerului independent

Am atins deja câteva dintre aceste puncte în ultima secțiune. În această secțiune, vom: furniza citate din manualul limbajului Java care dezvăluie caracteristicile limbajului; Să împărtășim cititorilor gândurile noastre despre anumite proprietăți ale limbii, pe baza propriei noastre experiențe de lucru cu cea mai recentă versiune.

Simplu

Ne-am dorit să creăm un sistem ușor de programat, să nu necesite pregătire suplimentară și să țină cont de practica și standardele de programare stabilite. Prin urmare, deși am considerat limbajul C++ nepotrivit pentru aceste scopuri, limbajul Java a fost conceput să fie cât mai asemănător cu acesta, pentru a face sistemul mai accesibil. Limbajul Java îi lipsesc multe dintre caracteristicile C ++ rar utilizate, obscure și obscure care, în opinia noastră, fac mai mult rău decât bine.

Sintaxa Java este în esență o versiune curățată a sintaxei C++. Acest limbaj nu are fișiere de antet, aritmetică pointer (și pointeri înșiși), structuri, uniuni, supraîncărcare operator, clase de bază virtuale etc. (Diferențele dintre Java și C ++ sunt descrise în notele C ++ împrăștiate în toată cartea.) Cu toate acestea, dezvoltatorii nu au căutat să corecteze toate deficiențele limbajului C ++.

De exemplu, sintaxa instrucțiunii switch în limbajul Java a rămas neschimbată. Cunoscând limbajul C++, va fi ușor să treceți la sintaxa limbajului Java.
Dacă utilizați de obicei un mediu de programare vizuală (cum ar fi Visual Basic), limbajul Java vi se va părea complicat.
Sintaxa sa pare adesea destul de ciudată (deși nu este greu de înțeles sensul expresiei). Mai important, limbajul Java necesită mult mai multă programare. Frumusețea Visual Basic este că mediul său de programare vizuală vă permite să creați o infrastructură de aplicații aproape automat. Atingerea aceluiași rezultat cu Java necesită programare manuală, dar rezultă programe mult mai scurte.

Există, totuși, un al treilea tip de mediu de programare care vă permite să creați programe folosind tehnologia „drag-and-drop”.

Un alt aspect al simplității este concizia. Unul dintre scopurile limbajului Java este acela de a permite dezvoltarea de programe care pot fi executate complet independent pe mașini mici. Interpretul principal și facilitățile de suport pentru clasă au o dimensiune de aproximativ 40KB; Bibliotecile standard și instrumentele de threading (în special microkernelul autonom) iau încă 17: KB.
Acesta este un succes uriaș. Rețineți, totuși, că bibliotecile de suport pentru GUI sunt mult mai mari.

Orientat obiect

În termeni simpli, programarea orientată pe obiecte este o tehnică de programare care se concentrează pe date (adică pe obiecte) și pe mijloacele de accesare a acestora. Prin analogie cu tâmplăria, meșterul orientat pe obiect este concentrat în principal pe scaunul pe care îl realizează, și doar în al doilea rând este interesat de instrumentele necesare pentru a face acest lucru; în același timp, tâmplarul neorientat pe obiecte se gândește doar la uneltele sale. Proprietățile orientate pe obiect ale Java și C++ sunt în esență aceleași.

Orientarea obiectelor și-a dovedit valoarea în ultimii 30 de ani și fără ea este imposibil să ne imaginăm un limbaj de programare modern. Într-adevăr, caracteristicile orientate pe obiecte ale limbajului Java sunt comparabile cu limbajul C++. Principala diferență dintre ele constă în mecanismul moștenirii multiple, pentru care limbajul Java a găsit cea mai bună soluție, precum și în modelul de metaclasă al limbajului Java.

Reflection (Capitolul 5) și Serializarea obiectelor (Capitolul 12) vă permit să implementați obiecte și instrumente persistente pentru construirea de interfețe grafice cu utilizatorul din componente ieșite din cutie.

Dacă nu ați programat niciodată în limbaje orientate pe obiecte, citiți cu atenție capitolele 4-6. Aceste capitole acoperă elementele de bază ale programării orientate pe obiecte și vă arată beneficiile dezvoltării de proiecte complexe față de limbajele tradiționale, orientate către procedura, cum ar fi C sau Basic.

Distribuit

Java are o bibliotecă mare de programe de transfer de date bazate pe TCP / IP (Transmission Control Protocol / Internet Protocol), HTTP (Hypertext Transfer Protocol) sau FTP (File Transfer Protocol). protocol de transfer de fișiere). Aplicațiile scrise în limbajul Java pot deschide și accesa obiecte prin rețea folosind șiURL-urile (Locația uniformă a resurselor) sunt la fel de ușoare ca o rețea locală.

Limbajul Java oferă o experiență web puternică și ușor de utilizat. Oricine a încercat vreodată să scrie programe pentru lucrul pe Internet în alte limbi va fi plăcut surprins de cât de ușor se rezolvă cele mai dificile sarcini, de exemplu, deschiderea conexiunilor de rețea (conexiune la sockets), în Java. Un mecanism elegant de așa-numitele servlet-uri face ca funcționarea serverului să fie extrem de eficientă.

Servleturile sunt acceptate de multe servere web populare. (Rețeaua va fi acoperită în Volumul II.) Comunicarea între obiectele distribuite în Java este asigurată de mecanismul de invocare a metodei de la distanță (acest subiect este tratat și în Volumul 2).

De încredere

Limbajul Java este conceput pentru a crea programe care trebuie să funcționeze fiabil în toate situațiile. Limbajul Java se concentrează pe detectarea timpurie a erorilor, verificarea dinamică (în timpul execuției programului) și excepțiile predispuse la erori... Singura diferență semnificativă dintre Java și C++ este modelul pointerului Java, care exclude capacitatea de a suprascrie o secțiune de coruperea memoriei și a datelor.

Această proprietate este, de asemenea, foarte utilă. Compilatorul Java detectează erori pe care alte limbi le găsesc doar în timpul execuției. În plus, programatorii care au petrecut multe ore căutând o eroare care a provocat coruperea memoriei din cauza unui pointer invalid vor fi foarte bucuroși că astfel de probleme nu pot apărea în limbajul Java, în principiu.

Dacă ați programat anterior într-un limbaj Visual Basic sau COBOL care nu utilizează în mod explicit pointeri, este posibil să nu înțelegeți de ce este atât de important. Programatorii C sunt mai puțin norocoși. Au nevoie de pointeri pentru a accesa șiruri, matrice, obiecte și chiar fișiere. La programarea în limbajul Visual Basic, nimic din toate acestea nu este necesar, iar programatorul nu trebuie să-și facă griji cu privire la alocarea memoriei pentru aceste entități. Pe de altă parte, multe structuri de date într-un limbaj non-pointer sunt foarte greu de implementat. Pentru structuri obișnuite, cum ar fi șiruri de caractere și matrice, pointerii nu sunt necesari. Puterea indicatoarelor intră în joc doar acolo unde nu vă puteți lipsi de ele, cum ar fi atunci când creați liste legate. Programatorul Java scapă pentru totdeauna de pointerii invalidi, alocările greșite și scurgerile de memorie.

Sigur

Limbajul Java este destinat utilizării într-un mediu în rețea sau distribuit. Din acest motiv, s-a acordat o mare atenție siguranței. Limbajul Java vă permite să creați sisteme care sunt protejate de viruși și falsificări.

În prima ediție, am scris: „Niciodată să nu spui niciodată”, și am avut dreptate. Un grup de experți în securitate de la Universitatea Princeton a descoperit primele erori de securitate în Java 1.0 la scurt timp după ce prima versiune a JDK a fost pusă în vânzare. Mai mult, atât ei, cât și alți specialiști au continuat și ulterior au găsit tot mai multe bug-uri în mecanismele de securitate ale tuturor versiunilor ulterioare ale limbajului Java.

Pe partea pozitivă a acestei situații, echipa de dezvoltare a limbajului Java și-a declarat toleranța zero pentru orice erori de securitate și a început imediat să remedieze orice probleme găsite în mecanismul de securitate a applet-ului. În special, publicând specificațiile interne ale interpretului Java, Sun a făcut mult mai ușor găsirea erorilor de securitate ascunse și a adus experți independenți pentru a le găsi.

Acest lucru a crescut probabilitatea ca orice erori în sistemul de securitate să fie descoperite în curând. În orice caz, este extrem de dificil să păcăliți sistemul de securitate în limbajul Java. Bug-urile găsite până acum au fost aproape subtile și (relativ) puține la număr.

Pagina Web de securitate a Sun se află la următoarea adresă URL: http://java.sun.com/sfaq/.

Iată câteva dintre situațiile pe care sistemul de securitate Java le previne.

1) Depășirea stivă a unui program executabil, care a fost cauzată de un „vierme” notoriu răspândit pe Internet.

2) Deteriorarea zonelor de memorie din afara spațiului alocat procesului.

3) Citirea și scrierea fișierelor locale utilizând un classloader securizat, cum ar fi un browser web, care nu permite accesul la astfel de fișiere.

Toate aceste măsuri de securitate sunt adecvate și de obicei funcționează impecabil, dar discreția nu strica niciodată. Deși bug-urile găsite până acum au fost departe de a fi banale, iar detaliile căutării lor sunt adesea ținute secrete, trebuie să recunoaștem că probabil că este încă imposibil să se dovedească siguranța limbajului Java.

De-a lungul timpului, limbii au fost adăugate noi protecții. Începând cu versiunea 1.1, în limbajul Java a apărut conceptul de clase semnate digital. Când utilizați o clasă semnată digital, puteți fi sigur de autor. Dacă aveți încredere în ea, puteți acorda acestei clase toate privilegiile disponibile pe mașina dvs.

Mecanismul alternativ de livrare a codului Microsoft se bazează pe tehnologia ActiveX și folosește doar semnături digitale pentru securitate. Evident, acest lucru nu este suficient - orice utilizator de software Microsoft poate atesta că programele de la producători cunoscuți se blochează adesea, creând astfel riscul coruperii datelor. Securitatea Java este mult mai fiabilă decât tehnologia ActiveX, deoarece controlează aplicația din momentul în care pornește și previne daune.

Arhitectură independentă

Compilatorul generează un fișier obiect, al cărui format nu depinde de arhitectura computerului - programul compilat poate rula pe orice procesor sub controlul sistemului de execuție a programului Java. Pentru a face acest lucru, compilatorul Java generează comenzi de cod octet care nu depind de arhitectura specifică a computerului. Codul de octet este conceput astfel încât să poată fi interpretat cu ușurință pe orice mașină sau tradus din mers în cod dependent de mașină.

Aceasta nu este o idee nouă. Cu mai bine de 20 de ani în urmă, atât sistemul de implementare Pascal al lui Niclaus Wirth, cât și UCSD Pascal au folosit aceeași tehnologie. Utilizarea codurilor de octet oferă un mare beneficiu în timpul execuției programului (deși compilarea sincronă o compensează în multe cazuri). Dezvoltatorii limbajului Java au făcut o treabă excelentă de a dezvolta un set de instrucțiuni bytecode care funcționează bine pe majoritatea computerelor moderne, traducându-se cu ușurință în instrucțiuni de mașină reale.

Independent de mașină

Spre deosebire de limbajele C și C++, specificația Java nu are aspecte specifice implementării. Atât dimensiunea tipurilor de date de bază, cât și operațiile aritmetice asupra acestora sunt bine definite.

De exemplu, int în Java înseamnă întotdeauna un număr întreg de 32 de biți. În C și C ++, tipul int poate însemna fie un întreg pe 16 biți, fie pe 32 de biți, precum și un număr întreg de dimensiune arbitrară, așa cum este ales de dezvoltatorul unui anumit compilator. Singura limitare este că dimensiunea tipului int nu poate fi mai mică decât dimensiunea int scurt și dimensiunea int lung. Dimensiunea fixă ​​a tipurilor numerice evită multe dintre problemele asociate cu rularea programelor pe diferite computere. Datele binare sunt stocate și transmise într-un format fix, ceea ce evită, de asemenea, neînțelegerile asociate cu diferite ordine de octeți pe diferite platforme (conflict ("big endian / little endian"). Șirurile sunt salvate în format standard Unicode.

Bibliotecile, care fac parte din sistem, definesc o interfață independentă de mașină. De exemplu, limbajul oferă o clasă abstractă Window și implementările sale pentru sistemele de operare Unix, Windows și Macintosh.

Oricine a încercat vreodată să scrie un program care funcționează la fel de bine pe Windows, Macintosh și zece versiuni de Unix știe că aceasta este o sarcină foarte dificilă. Versiunea Java a făcut o încercare eroică de a rezolva această problemă, oferind un set de instrumente simplu care adaptează elementele comune ale interfeței cu utilizatorul la o mare varietate de platforme software. Din păcate, biblioteca, care a luat multă muncă, nu ne-a permis să obținem rezultate acceptabile pe diferite platforme. (În același timp, au apărut diferite erori în programele de grafică de pe platforme diferite.)

Totuși, acesta a fost doar începutul. În multe aplicații, independența mașinii este mult mai importantă decât sofisticarea unei interfețe grafice cu utilizatorul. Acestea sunt aplicațiile care au beneficiat de Java 1.0. Cu toate acestea, setul de instrumente pentru interfața grafică cu utilizatorul a fost acum complet reproiectat și nu mai depinde de interfața cu utilizatorul de pe computerul gazdă. Noua versiune este mai semnificativă și, în opinia noastră, mai atractivă pentru utilizator decât cele anterioare.

Interpretat

Interpretul Java poate fi trimis la orice mașină și poate executa bytecode direct pe ea. Deoarece editarea linkurilor este un proces mai ușor, dezvoltarea software-ului poate deveni mult mai rapidă și mai eficientă.

Acesta poate fi un avantaj la dezvoltarea aplicațiilor, dar citatul este o exagerare clară. În orice caz, compilatorul Java din Java Software Development Kit (JSDK) este destul de lent. (Unele compilatoare de al treilea fel, cum ar fi cele de la IBM, sunt mult mai rapide.) Viteza de recompilare este doar un factor care caracterizează eficiența unui mediu de programare. Când compari viteza Java cu Visual Basic, s-ar putea să fii dezamăgit.

Performanta ridicata

În timp ce codurile de octet interpretate sunt în general mai mult decât adecvate în performanță, există situații în care este necesară o performanță și mai mare. Codurile byte pot fi traduse din mers (în timpul rulării) în coduri de mașină pentru un anumit procesor pe care rulează aplicația.

Dacă se folosește un interpret pentru a executa bytecodes, expresia „performanță înaltă” nu trebuie folosită. Cu toate acestea, pe multe platforme este posibil un alt tip de compilare, furnizat de compilatoare just-in-time-JIT. Ei traduc bytecode în cod dependent de mașină, stochează rezultatul în memorie și apoi îl apelează după cum este necesar. Deoarece interpretarea este efectuată o singură dată, această abordare crește viteza de lucru de multe ori.

În ciuda faptului că compilatoarele sincrone sunt încă mai lente decât compilatoarele dependente de mașină, ele sunt în orice caz mult mai rapide decât interpreții, oferind o accelerare de 10 sau chiar 20 de ori pentru unele programe. Această tehnologie se îmbunătățește constant și în cele din urmă poate atinge viteze pe care compilatoarele tradiționale nu le pot depăși niciodată. De exemplu, un compilator sincron poate determina ce bucată de cod este executată mai des și o poate optimiza pentru viteza de execuție.

MULTI-FILET

Oferă o mai bună interactivitate și execuție a programului.

Dacă ați încercat vreodată să faceți calcule multithreaded în orice alt limbaj de programare, veți fi plăcut surprins de cât de ușor este să faceți acest lucru în Java. Firele Java pot profita de sistemele de multiprocesare dacă sistemul de operare permite acest lucru. Din păcate, implementările fluxurilor pe majoritatea platformelor sunt foarte diferite unele de altele, iar dezvoltatorii limbajului Java nu fac nicio încercare de a obține uniformitate. Numai codul pentru apelarea thread-urilor rămâne același pentru toate mașinile; limbajul Java schimbă implementarea multithreading-ului către sistemul de operare de bază sau biblioteca de threading. (Firele sunt acoperite în Volumul II.) În ciuda acestui fapt, ușurința multithreading-ului face ca Java să fie atât de atractiv pentru dezvoltarea software-ului pentru server.

Dinamic

În multe privințe, Java este mai dinamic decât C sau C++. A fost conceput pentru a se adapta cu ușurință la un mediu în continuă schimbare. Noi metode și obiecte pot fi adăugate în mod liber bibliotecilor fără a provoca niciun rău. Limbajul Java facilitează obținerea de informații despre progresul unui program.

Acest lucru este foarte important atunci când trebuie să adăugați cod la un program care rulează deja. Un prim exemplu în acest sens este codul care este descărcat de pe Internet pentru a fi executat de către un browser. În Java 1.0, nu a fost ușor să obțineți informații despre progresul unui program în curs de execuție, dar versiunea actuală a limbajului Java expune programatorului atât structura, cât și comportamentul obiectelor programului executat.
Acest lucru este foarte valoros pentru sistemele care trebuie să analizeze obiecte în timpul execuției programului. Astfel de sisteme includ constructori GUI, depanatoare inteligente, plug-in-uri și baze de date cu obiecte.

Java și Internetul

Ideea este simplă - utilizatorii descarcă bytecodes Java de pe Internet și le execută pe mașinile lor. Programele Java care rulează pe browsere web se numesc applet-uri. Pentru a utiliza applet-ul, aveți nevoie de un browser Web activat pentru Java, care poate interpreta bytecodes. Sursa limbajului Java este licențiată de Sun, care insistă că atât limbajul în sine, cât și structura bibliotecilor sale de bază rămân neschimbate. Din păcate, acesta nu este cazul în realitate. Diferitele versiuni ale browserelor Netscape și Internet Explorer acceptă versiuni diferite ale limbajului Java, dintre care unele sunt semnificativ depășite. Această situație nefericită creează din ce în ce mai multe obstacole în dezvoltarea applet-urilor care profită de cea mai recentă versiune a limbajului Java. Pentru a rezolva această problemă, Sun a dezvoltat Java Plug-in, care oferă cel mai modern mediu pentru rularea programelor Java bazate pe browserele Netscape și Internet Explorer.

Încărcarea unui applet este ca și încorporarea unei imagini într-o pagină Web. Appletul devine parte a paginii, iar textul se înfășoară în jurul spațiului pe care îl ocupă. Cu toate acestea, diferența este că imaginea este acum vie. Răspunde la comenzile utilizatorului, își schimbă aspectul și oferă transfer de date între computerul pe care este vizualizat appletul și computerul care rulează appletul.

Încărcarea unui applet este ca și cum inserați o imagine într-o pagină Web. Appletul devine parte a paginii, iar textul se înfășoară în jurul spațiului pe care îl ocupă. Ideea este că imaginea este „în direct”. Răspunde la intrarea utilizatorului, își schimbă aspectul și transferă date între computerul care rulează appletul și computerul care rulează appletul.

În fig. 1.1 prezintă un exemplu bun de pagină Web dinamică care efectuează calcule complexe și utilizează un applet pentru a afișa molecule. Pentru a înțelege mai bine structura moleculei, o puteți roti sau mări imaginea folosind mouse-ul. Astfel de manipulări nu pot fi făcute pe pagini web statice, dar aplicațiile fac posibil acest lucru. (Acest applet poate fi găsit la http://jmol.sourceforge.net.)

Orez. 1.1. applet Jmol

Appleturile pot fi folosite pentru a adăuga butoane și câmpuri de text noi la o pagină Web. Cu toate acestea, aceste aplicații se încarcă lent prin linia telefonică.

Același lucru se poate face folosind HTML dinamic, formulare HTML (Hypertext Markup Language) sau un limbaj de scripting, cum ar fi JavaScript. Desigur, primele applet-uri au fost destinate animației: globuri care se rotesc, personaje de desene animate dansante, texte fanteziste și așa mai departe. Cu toate acestea, majoritatea celor de mai sus pot face GIF-uri animate, iar HTML dinamic, combinat cu scripting, face mult mai mult decât applet-uri.

Ca urmare a incompatibilităților de browser și a încărcării inconsecvente prin conexiuni lente de rețea, aplicațiile care vizează paginile Web nu au reprezentat un progres uriaș. În rețelele locale (intranet) situația este complet diferită. De obicei, nu au probleme cu lățimea de bandă, așa că timpul de încărcare a applet-urilor este neimportant. În rețeaua locală, puteți selecta browserul dorit sau puteți utiliza programul Java Plug-In. Angajații nu pot muta un program livrat printr-o rețea într-o locație greșită sau îl pot instala incorect, iar un administrator de sistem nu trebuie să ocolească toate mașinile client și să actualizeze programele pe acestea. Un număr mare de programe concepute pentru contabilitatea stocurilor, programarea vacanțelor, rambursarea călătoriilor și altele asemenea au fost dezvoltate de multe corporații sub formă de applet-uri bazate pe browser.

Pe măsură ce am scris cartea, pendulul a trecut din nou de la programele client la programarea pe server. Mai exact, serverele de aplicații pot folosi capacitățile de monitorizare ale mașinii virtuale Java pentru a echilibra automat încărcarea, a pune în comun conexiunile la baze de date, a sincroniza obiecte, a securiza închiderile și reîncărcările și alte procese necesare pentru aplicațiile de server scalabile, care sunt aproape imposibil de implementat corect. Astfel, programatorii care creau aplicații au putut să cumpere aceste mecanisme complexe în loc să le dezvolte ei înșiși. Acest lucru a crescut productivitatea programatorilor - aceștia s-au concentrat pe logica programelor lor, fără a fi distrași de detaliile asociate cu funcționarea serverelor.

Top articole similare