Java 5

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Sigla Java

Java 5 este versiunea 5.0 a ediției standard a limbajului de programare Java ( Java 2 Platform Standard Edition sau J2SE ). Această versiune a fost inițial cunoscută sub numele de versiunea 1.5.0, dar creatorii limbajului, pentru a sublinia nivelul de maturitate și stabilitate atins, au preferat să o redenumească eliminând cea inițială [1] . Numele de cod al Java 5 în timpul dezvoltării a fost Tiger .

Această versiune a fost publicată pentru prima dată pe 29 septembrie 2004 și conține noi caracteristici care au ca scop simplificarea și îmbunătățirea limbajului în sine. Codul bytecode produs de un compilator Java 5 poate rula pe orice mașină virtuală Java . Prin urmare, pentru a profita de noile caracteristici ale limbajului, nu este necesar să actualizați mașina virtuală.

Noile caracteristici ale limbajului au făcut posibilă îmbunătățirea și simplificarea altor componente standard ale Java. De exemplu, Enterprise JavaBeans , care fac parte din specificațiile ediției Enterprise Java, erau cunoscute de dezvoltatori ca fiind deosebit de complexe de programat, dar de la versiunea 3.0 această problemă a fost rezolvată datorită utilizării metadatelor.

Schimbări de limbă

Număr variabil de argumente

Este posibil să se definească metode capabile să aibă ca intrare orice număr de argumente de același tip. Folosind matricele este posibil să obțineți aceeași funcționalitate cu versiunile anterioare versiunii 1.5; cu toate acestea, utilizarea unei sintaxi specifice face acest tip de cod mai ușor și mai ușor de citit.

De exemplu, următorul cod folosește numai caracteristici Java versiunea 1.4:

 public static void do_something ( String args [] ) {
    for ( int i = 0 ; i < args . length ; i ++ ) {
      //Fă ceva
    }
 }
 // ...
    do_something ( nou Șir [] { "Acesta este" , "un set de parametri" , "trecut ..." } );
    do_something ( new String [] { "This is" , "un set de parametri" , "trecut ..." , "to function" } );

Deci, în practică, metoda este definită pentru a lua un tablou ca parametru, care este apoi inițializat atunci când metoda în sine este apelată.

Cu Java 1.5, același rezultat poate fi obținut cu următorul cod:

 public static void do_something ( String ... args ) {
    for ( int i = 0 ; i < args . length ; i ++ ) {
      //Fă ceva
    }
 }
 // ...
    do_something ( "Acesta este" , "un set de parametri" , "trecut ..." );
    do_something ( „Acesta este” , „un set de parametri” , „trecut ...” , „să funcționeze” );

Ieșire formatată

Funcția printf a fost adăugată la clasa System , care permite formatarea rezultatului similar funcției cu același nume în limbajul C.

public static void main (String ... e)
 {
    Sistem . afară . printf ( "Ați trecut% s și% s, în total% d parametri \ n" , s [ 0 ] , s [ 1 ] , 2 );
 }

Funcția printf are următorul prototip:

 public static void printf ( String s , Object ... objs );

Tipuri generice

Pictogramă lupă mgx2.svg Același subiect în detaliu: Generics Java .

Tipurile generice sau generice vă permit să simplificați utilizarea claselor care, cum ar fi clasele pachetului Colecție, gestionează colecțiile de obiecte de orice tip. Fără utilizarea tipurilor generice, gestionarea obiectelor de orice tip se poate face prin conversia mai întâi a obiectelor la tipul obiect , care este clasa din care derivă toate celelalte. Această soluție forțează programatorul să utilizeze operații de conversie de tip ( turnare ) ori de câte ori este necesar să se ia un obiect din colecție; în plus, nu este posibil să se verifice la momentul compilării erorile de conversie de tip, de exemplu dacă un tip de obiect nevalid este adăugat la colecție.

Tipurile generice rezolvă ambele probleme, de exemplu, următorul cod folosește exclusiv caracteristicile Java 1.4 pentru a adăuga și a prelua ulterior două șiruri dintr-o colecție de tip ArrayList :

 List list = new ArrayList ();
 listă . add ( „șirul1” );
 listă . add ( „șir2” );
 String s1 = ( String ) listă . get ( 0 );
 StringBuffer s2 = ( StringBuffer ) listă . obține ( 1 );

Cu Java 1.5, același cod poate fi scris în felul următor:

 List < String > list = new ArrayList < String > ();
 listă . add ( „șirul1” );
 listă . add ( „șir2” );
 Șirul s1 = listă . get ( 0 );
 StringBuffer s2 = listă . obține ( 1 );

În ambele versiuni există o eroare de tip, deoarece variabila s2 nu este declarată de tip String (și nici de superclasă de String). Cu toate acestea, în versiunea 1.4, codul este compilat și eroarea este detectată numai în timpul rulării, în timp ce cu versiunea 1.5, eroarea este detectată la compilare, deoarece variabila listă a fost declarată ca o colecție de obiecte de tip String .

Metadate

Metadatele vă permit să asociați informații suplimentare cu clasele , interfețele , metodele și câmpurile unui program Java. Aceste informații suplimentare, numite și adnotări, pot fi citite și procesate atât de compilatorul Java, cât și de alte instrumente și pot fi stocate în fișierele .class produse de compilator pentru a fi apoi citite în timpul rulării folosind funcțiile de introspecție adecvate puse la dispoziție. din limbaj.

Metadatele, combinate cu instrumente care le pot procesa, pot face sintaxa unui program Java mult mai concisă. De exemplu, pentru a defini metodele la distanță ale unei clase fără a utiliza metadatele, ar fi necesar să scrieți cod similar cu următoarele:

 interfață publică PingIF extinde Remote {
      public void ping () aruncă RemoteException ;
  }
  clasa publică Ping implementează PingIF {
     public void ping () {
     }
  }

cu metadate, un rezultat similar poate fi obținut cu un cod mult mai simplu și mai ușor de citit:

 clasă publică Ping {
     public @remote void ping () {
     }
  }

Autoboxing

Autoboxingul vă permite să faceți o conversie automată de tip între un tip primitiv și clasa sa echivalentă. De exemplu, în următorul cod se efectuează o conversie automată a variabilei i de la tipul primitiv int la tipul întreg , iar valoarea rezultată este atribuită variabilei i_object :

 int i = 42 ;
 Integer i_object = i;
 Sistem . afară . println ( i_object );

Această modificare merge, de asemenea, în direcția unei lizibilități mai mari a codului, deoarece elimină necesitatea de a efectua o conversie explicită de tip.

Îmbunătățit pentru buclă (bucla foreach )

Bucla for a fost îmbunătățită pentru a elimina necesitatea de a utiliza iteratoare, oferind astfel o sintaxă mai simplă și mai puțin predispusă la erori. De exemplu, următorul este un fragment de cod Java 1.4:

 int [] iss = new int [] { 1 , 2 , 3 , 4 , 5 } ;
 for (int i = 0; i <iss. length; i ++) 
 {
    listă . se adaugă (nou Integer (iss [i]));
    // ...
 }

 List list = new ArrayList ();
 for ( Iterator it = list . iterator (); it . hasNext ();) 
 {
    doStuff (( Întreg ) x );
    // ...
 }

În versiunea 1.5, același cod poate fi scris după cum urmează:

 int [] iss = new int [] { 1 , 2 , 3 , 4 , 5 } ;
 pentru ( int x : iss ) 
 {
    listă . adăugați ( x );
    // ...
 }

 List < Integer > list = new ArrayList < Integer > ();
 pentru ( Integer x : list ) 
 {
    doStuff ( x );
    // ...
 }

Tipul de enumerare

Tipul de enumerare vă permite să definiți o serie de valori constante, fără a fi nevoie să atribuiți în mod explicit o valoare numerică corespunzătoare fiecăreia dintre ele. De exemplu, în Java 1.4 o enumerare poate fi definită după cum urmează:

 public static final int RED = 0 ;
  public static final int VERDE = 1 ;
  public static final int GALBEN = 2 ;
  public static final int ALBASTRU = 3 ;

În Java 1.5, cuvântul cheie enum poate fi utilizat pentru a defini același tip de valori:

 enumere publică Culori { ROȘU , VERDE , GALBEN , ALBASTRU };

Importul constantelor statice

Importarea constantelor statice vă permite să utilizați constantele statice ale unei clase sau interfețe fără a fi nevoie să derivați din acea clasă sau să implementați acea interfață. Pentru a efectua acest tip de import, utilizați cuvântul cheie static de import , de exemplu:

 import static java.awt.BorderLayout. * ;

Notă

  1. ^(RO) http://java.sun.com/j2se/1.5.0/docs/relnotes/version-5.0.html Motive pentru schimbarea numărului de versiune.

Elemente conexe

linkuri externe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT