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.
- ł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"));
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)); }
Path dir = Path.get("mydir"); DirectoryStream stream = dir.newDirectoryStream("*.java"); try { for (DirectoryEntry entry: stream) { System.out.println(entry.getName()); } } finally { stream.close(); }
Uff. Trochę tego jest ale nie są to (poza projektem Jigsaw) tak bardzo interesujące rzeczy.
c.d.n.
Brak komentarzy:
Prześlij komentarz