javam

Noyabr 29, 2010

JAVA 7 – Yeniliklər

Filed under: javam.mixed, javam.news — Etiketlər: , , , — -- @ 2:17 axşam

Java 7Bu yazıda biraz Java 7-dəki yeniliklərdən bəhs edəcəyik. Qeyd edək ki, bu versiyanın kod adı Dolphin adlanır. Bu proyekt 2006 Avqust tarixində başlayıb və 2011 ortalarında ilk release hazır olacaq.

  • JDK 1.0 – Oak (Yanvar 23, 1996)
  • J2SE 1.2 – Playground (Dekabr 8, 1998)
  • J2SE 1.3 – Kestel (May 8, 2000)
  • J2SE 1.4 – Merlin (Fevral 6, 2002)
  • J2SE 5.0 – Tiger (Sentyabr 30, 2004)
  • Java SE 6 – Mustang (Dekabr 11, 2006)
  • Java SE 7.0 – Dolphin (2011 ortaları)
  • Java SE 8.0 – (2012 sonu)



Başlıca dəyişikliklər bunlardır:

  • Garbage-First GC (G1 garbage collector) daha performanslıdı
  • Dinamik dillərə JVM dəstəyi, Multi Language Virtual Machine
  • Çox nüvəli prosessorlarda paralel hesablama üçün yeni kitabxana
  • Sıxışdırılmış 64-bit pointer-lər
  • Java Annotations geniş dəstək(JSR 308)
  • Concurrency utilities(JSR 166)
  • Platformadan asılı olmayan yeni fayl I/O və metadata, simbolik linklərin dəstəklənməsi. java.nio.file and java.nio.file.attribute paketləri(JSR 203)
  • Elliptic curve kriptoqrafik alqoritmləri üçün kitabxana səviyyəsində dəstək
  • Java 2D üçün XRender pipeline
  • Qrafik üçün yeni platform API
  • Yeni şəbəkə protokolları üçün kitabxana səviyyəsində geniş dəstək. SCTP və Sockets Direct Protocol daxil olmaqla
  • XML and Unicode upstream dəyişikliklər
  • Dildəki yeniliklər(JSR 334)

Biz dildə olan yeniliklərdən danışacağıq, burada bir neçə şey asanlaşdırılıb:

Collections

Artıq Collections-a müraciət bəzi dillərdəki(Groovy, Ruby, Perl və s.) kimi etmək mümkün olacaq.
Halhazırda:

List<String> list = new ArrayList<String>();
list.add("item");
String item = list.get(0);

Set<String> set = new HashSet<String>();
set.add("item");

Map<String, Integer> map = new HashMap<String, Integer>();
map.put("key", 1);
int value = map.get("key");

Java 7:

List<String> list = ["item"];
String item = list[0];

Set<String> set = {"item"};

Map<String, Integer> map = {"key" : 1};
int value = map["key"];

Avtomatik Resource Management

Halhazırda javada InputStream, Writers, Sockets, Sql və s. resurlarını close etmək lazım gəlir. Yeni versiyada isə artıq java bunu özü edəcək. Yalnız bu resurslar Closable olmalıdır.

Halhazırda:

BufferedReader br = new BufferedReader(new FileReader(path));
try {
   return br.readLine();
} finally {
   br.close();
}

Java 7:

try (BufferedReader br = new BufferedReader(new FileReader(path)) {
   return br.readLine();
}

Birdən çox resurs da mümkündür:

try (
   InputStream in = new FileInputStream(src);
   OutputStream out = new FileOutputStream(dest))
{
 // code
}

Multi-catch

Halhazırda:

try {
// Say some file parser code here...
} catch (IOException ex) {
// log and rethrow exception
} catch (ParseException ex) {
// log and rethrow exception
} catch (ClassNotFoundException ex) {
// log and rethrow exception
}

Java 7:

try {
// Say some file parser code here...
} catch (IOException ex | ParseException ex | ClassNotFoundException ex) {
// log and rethrow exception
}

Generic Instance Creation (diamond)

Halhazırda:

Map<String, List<String>> anagrams = new HashMap<String, List<String>>();

Java 7:

Map<String, List<String>> anagrams = new HashMap<>();

Bu diamond operator adlanır.

Rəqəmlərdə altxətt

Uzun rəqəmlər çətin oxunur. int və long ədədlərdə alt xətt işlədərək oxunaqlı etmək mümkün.

int one_million = 9_000_000;
long max_long = 9_223_372_036_854_775_807;

Switch blokunda String

Ancaq enum və rəqəm tiplərini işlətmək olurdu. İndi isə String də bura daxildir

String s = ...
switch(s) {
 case "quux":
    processQuux(s);
    // fall-through
  case "foo":
  case "bar":
    processFooOrBar(s);
    break;
  case "baz":
     processBaz(s);
    // fall-through
  default:
    processDefault(s);
    break;
}

İkilik say sistemi

Halhazırda:

Integer.parseInt("101010", 2);

Java 7:

int binary = 0b101010;



Qaynaqlar:
1. https://javam.wordpress.com/2010/11/24/oracle-announces-jsrs-for-java-7-and-java-8/
2. http://en.wikipedia.org/wiki/Java_version_history
3. http://code.joejag.com/2009/new-language-features-in-java-7/
4. http://rajakannappan.blogspot.com/2010/05/new-features-in-java-7-dolphin.html

Advertisements

2 Şərh »

  1. Bir seyi ve en onemlisi unutmusuz. Tebii ki mene gore en onemli.

    computer science’in en gozel (onurga) hisselerinden functional programming xususiyyetleri elave olunub (Java’da Closurlar) Scala’nin tesiri boyukdur. Python’da ilk gunlerden var idi

    project lambda http://openjdk.java.net/projects/lambda/

    Şərh tərəfindən Hilal — Noyabr 29, 2010 @ 2:57 axşam

  2. Şərhiniz üçün çox sağolun. Amma dediyiniz dəyişikliyi, yəni Lambda-nı Java 8-ə saxlayıblar.
    http://www.infoq.com/news/2010/11/oracle-java-jsr

    Şərh tərəfindən nikli — Noyabr 29, 2010 @ 4:50 axşam


RSS feed for comments on this post. TrackBack URI

Bir cavab yazın

Sistemə daxil olmaq üçün məlumatlarınızı daxil edin və ya ikonlardan birinə tıklayın:

WordPress.com Loqosu

WordPress.com hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

Twitter rəsmi

Twitter hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

Facebook fotosu

Facebook hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

Google+ foto

Google+ hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

%s qoşulma

WordPress.com-da pulsuz sayt və ya bloq yarat.

%d bloqqer bunu bəyənir: