środa, 31 marca 2010

JDK 7 - nowości 3

I wracam po dwóch dniach choroby do zapoznawania się z nowościami w JDK7. Dzisiaj czas na podstawowe zmiany, czyli:

Core

  • Project Jigsaw - Modularyzacja
  • Projekty w Javie stają się coraz większe, samo JDK staje się ogromne. Stąd potrzeba modularyzacji. Podstawą do wdrożenia modułów w JDK ma być projekt Jigsaw. Korzysta on z wcześniej omawianego przez mnie JSR294 - czyli zmian w języku Java udostępniających modularyzacje (JDK 7 nowości 2). W proponowanym rozwiązaniu ma się pojawić plik opisujący metadane modułu. Plik ten (nazwany module-info.java i umieszczony w podstawowym katalogu modułu) opisywałby zależności między tym modułem a innymi modułami. Mógłby mieć np. następującą składnie:
    module M1@1.0 provides M2@2.0, M3@3.0 {
      requires M4@4.0, M5@5.0;
      permits  M6;
    } 
    
    Nasz moduł M1 w wersji 1.0 dostarcza funkcjonalność modułu M2 (w wersji 2.0) i M3 (w wersji 3.0), do działania wymaga M4 (w wersji 4.0) i M5 (w wersji 5.0). Pozwala z siebie korzystać modułowi M6. Krótkie przeczytanie tego uzmysławia jaką fajną zabawkę dostaną wszyscy programiści - dzięki zdefiniowaniu konkretnych wymagań (w konkretnych wersjach), dzięki definiowaniu, że moduł dostarcza konkretnych funkcjonalności (w konkretnych wersjach) wszystkie biblioteki będą mogły łatwiej ze sobą współpracować. Będzie można łatwo zastosować "zamienniki" - implementacje innych autorów. Projekt Jigsaw nie będzie jednak wchodził do Oficjalnej Java SE 7 Platform Specification i może nie być wspierany przez inne (niż Sunowskie OpenJDK) JDK.
  • Poprawienie architektury class-loadera
  • takie poprawienie ClassLoader API aby uniknąć deadlocków, nie zmieniając istniejącego kodu korzystającego z ClassLoadera.
  • Metoda close w URLClassLoader
  • Dodanie metody close() w klasie URLClassLoader. Dzięki temu łatwo będzie można skorzystać z Automatic Resource Management (JDK 7 nowości 2).
  • Unicode 5.1
  • JSR166y
  • Nowa biblioteka/framework wspierający i ułatwiający korzystanie z współbieżności w Javie z ParallelArrays.
  • JSR 203: Nowe I/O APIs dla Javy (NIO.2)
  • Jest to rozszerzenie istniejących już rozwiązań. Umożliwia np.
    • łatwe kopiowanie:
    • import java.nio.file.*; 
      Path home = Path.get("/home/gus"); 
      Path profile = home.resolve(".bash_profile"); 
      // Backup existing file 
      profile.copyTo(home.resolve(".bash_profile.backup")); 
      
    • Obsługę atrybutów pliku, obsługę symbolicznych linków:
    • Path file = Path.get("/usr/spool"); 
      // read file attributes of the link 
      BasicFileAttributes attrs = Attributes 
          .readBasicFileAttributes(file, false); 
      if (attrs.isSymbolicLink()) { 
          // read target of link 
          Path target = file.readSymbolicLink(); 
          // check /usr/spool == /usr/spool/../var/spool 
          assert file.isSameFile(file.resolve(target)); 
      }
      
    • Obsługę katalogów jako strumieni:
    • Path dir = Path.get("mydir"); 
      DirectoryStream stream = dir.newDirectoryStream("*.java"); 
      try { 
          for (DirectoryEntry entry: stream) {         
              System.out.println(entry.getName()); 
          } 
      } finally { 
          stream.close(); 
      }
      
    • Dodatkowe rzeczy w Socket Channel API
    • Asynchroniczne API w dostępie do plików jaki i socketów
    • SCTP i SDP dla Solarisa
    • I trochę innych jeszcze nowości
  • Elliptic-curve cryptography (ECC)
  • Implementacja ECC którą będzie częścią standardową JDK 7.

Uff. Trochę tego jest ale nie są to (poza projektem Jigsaw) tak bardzo interesujące rzeczy.
c.d.n.

Brak komentarzy:

Prześlij komentarz