Что нового появилось в Java SE 6 ?

 

Если сравнивать с тем, что изменилось в Java 5.0 по сравнению с Java 1.4, то такого рода изменений не произошло. Совсем. Язык остался таким, каким он был.

А вот если посмотреть на другие аспекты, то тут произошло мнго изменений, которые я постараюсь описать. Вряд ли смогу описать все подробно – думаю, что для этого проще зайти на сайт Sun и почитать –

Java SE 6 — Features and Enhancements

 

В общем-то если вы умеете читать английскую документацию, то дальше вам надо просто идти на сайт, который я указал и честно прочитать все, что там встретится. И написать гораздо более интересную статью, чем я.

Данная работа появилась именно в результате чтения всех новинок. А там есть что посмотреть. Я не включил описание всех изменений, указанных в официальной документации потому, что посчитал не все столь важным и нужным. Да и объем такой большой, что заняло бы это у меня много времени. Задача данной статьи просто коснуться того, что изменилось. Если вас заинтересует какая-то область, то идите по ссылкам. Итак, давайте по порядку.

 

Collection Framework

Здесь появились новые интерфейсы и реализации этих интерфейсов.

 

Интерфейсы:

Deque – развитие интерфейса Queue. Название расшифровывается как «double ended queue» и произносится как ДЕК. Как вы наверно догадались основная идея в том, чтобы организовать очередь, которая работает с обоих концов – как FIFO (интерфейс Queue) и LIFO (интерфейс Stack)

BlockingDeque – интерфейс позволяет блокировать себя при ожидании поступления в очередь элемента.

NavigableSetNavigableMap – интерфейсы позволяют искать наиболее близкое значение в наборе.

ConcurrentNavigableMap – тоже, что и NavigableMap, но еще поддерживает рекурсию в подмэпах. Не смотрел более подробно – предоставляю это сделать вам самим.

 

Реализации (я думаю. что вы сами догадаетесь, какие интерфейсы они реализуют):

ArrayDequeConcurrentSkipListSetConcurrentSkipListMapLinckedBlockingDeque

 

Также надо отметить, что изменились существующие классы, которые теперь реализуют новые интерфейсы.

Это – LinkedListTreeSetTreeMap.

 

Deployment (Java Web Start and Java Plug-in)

В общем основная идея в том, что теперь изменен формат кэширования приложений для Web Start. Также появились некоторые дополнительные фичи при загрузке – система управления кэшем, поддержка параметра “no-cache” в HTTP-запросе.

Есть некоторые изменения по безопасности, среди которых  я бы выделил поддержку сертификатов.

Ну и настоятельно рекомендую обратить внимание на улучшенный интерфейс при работа с Java Console.

 

Internationalization Support

Наверно самое впечатляющее для меня было то, что окзазывается поддерживается не один Григорианский календарь, а целых три:

— Григорианский календарь (с версии 1.1)

— Буддисткий календарь (с версии 1.4)

— Японский императорский календарь (с версии 1.6)

 

I/O Support

Изменения затронули два пакета:

 

java.io

Появился новый класс – Console. (http://java.sun.com/javase/6/docs/api/java/io/Console.html)

Он предназначен для взаимодействия с символьно-оринетированным устройством. В описании класса есть неплохой пример для ввода пароля

Также следует обратить внимание на новые методы в классе File для работы с диском – getTotalSpace(), getFreeSpace(), getUsableSpace(). И для работы с файлом –setWritable(), getReadable(), getExecutable()

 

java.nio

Сделана новая имплементация для java.nio.channels.SelectorProvider. Как пишут, он теперь более масштабируем.

И изменен метод lock для класса java.nio.channels.FileChannel. Так что тем, кто их использует надо быть внимательнее.

 

JAR (Java Archive Files)

Здесь было приятно увидеть следующее. Появилось два класса-потока:

  1. java.util.zip.DeflaterInputStream – чтение сжатых данных из потока
  2. java.util.zip. InflaterOutputStream – запись сжатых данных в поток

Это позволяет передавать по сети сжатые данные, что не может не радовать.

Кроме этого были сделаны дополнения:

- Список файлов в архиве теперь не ограничен 64Кб (была такая проблема при больших архивах, где много файлов)

- Для Windows сделаны дополнения: имя файла теперь может быть длиннее 256 символов и ограничение на одновременное открытие более 2000 zip-файлов тоже снято. Наверно какое-то ограничение осталось, но видимо оно теперь слишком большое.

- Утилита JAR теперь имеет ключик e – он позволяет задать точку входа – аналог аттрибута Main-Class в манифесте.

 

JMX (Java Management Extensions)

Поначалу я думал. что смогу осилить описание изменений, которые сделаны в данной области, но не думаю, что этот труд будет оценен. В двух словах – введена поддержка generics, улучшены свойства MBeans и исправлено достаточно много багов. Больше не хотелось бы говорить, кому очень надо – идите по ссылке JMX API Enhancements

Хотя думаю, что те, кто заинтересован в такой инфомрации уже там побывали.

 

JPDA (Java Platform Debugger Architecture)

Здесь в общем-то тоже какой-то аховой информации я не обнаружил. выделил бы следующее:
— JVMDI теперь удален. А функциональность как я понял перенесена в JVM TI
— исправлено немалое число багов
Для тех, кто заинтересуется Java Debug API советую посмотреть — Java™ Debug Interface

Для тех, кого этот вопрос мало интересует (а таких думаю как раз большинство) этот раздел вряд ли представляет большой интерес.

 

JVM TI (Java Virtual Machine Tool Interface)

Тем кто знает, что такое JVM TI могу сообщить только одно – он был улучшен и изменен. Более подробно вряд ли есть смысл описывать. Тем же кто очень хочет узнать. что это такое советую заглянуть вот сюда —  JVM™ Tool Interface

 

JConsole for Java SE 6

Тем кто пользовался могу сообщить, что теперь JConsole является официально поддерживаемой утилитой. Тем кто не знает, что это такое скажу только что это утилита, которая в графическом виде позволяет заниматься мониторингом JVM. Насколько это важно и нужно – решать вам.

 

Networking Features

Здесь есть что посмотреть.
Во-первых надо обратить внимание на класс java.net.NetworkInterface. Он теперь позволяет получить много информации: о маске подсети, broadcast адрес, MAC-адрес.Во-вторях появился новый класс —java.net.InterfaceAddress. Позволяет получить информацию о сетевом интерфейсе, причем как для IPv4, так и для IPv6.Изменения коснулись также поддержки NTLM, HTTP-аутентификации и работы с куками.

Отдельно я бы еще выделил создание двух пакетов, которые позволяют построить легковесный HTTP-сервер. Подробнее можно посмотреть здесь — Java™ HTTP Server
 

Perfomance

Я не думаю, что надо перечислять все, что там сделано, но с другой стороны не упомянуть об этом было бы не очень разумно. В данном случае придется опять обойтись ссылкой — Java SE 6 Performance White Paper

Единственное, чтобы я выделил – результаты тестов, представленные в данной статье. Впечатлило. Общая производительность вычислений возрасла блее чем на 70%. Операции ввода/вывода – в два раза.

 

Scripting

Основная задача описана в JSR-223 Scripting for the Java Platform. Она состоит в том, чтобы можно «на лету» выполнить программу, написанную на каком-либо скриптовом языке. Главное, чтобы был реализован движок, который можно использовать. Java SE 6 содержит Rhino: JavaScript for Java — проект от Mozilla.

Полное описание этого крайне удобного механизма можно найти здесь — Java Scripting Programmer’s Guide

 

Security

Здесь тоже немало изменений. Я бы выделил несколько областей: XML Digital Signature API, Smart Card I/O API, дополнительные опции утилит jarsigner и keytool и всякие поддержки штук, которые понятны тем, кто этим занимается. Я не очень с этим сталкивался, потому лучше вам посмотреть самим — Java™ 6 Security Enhancements

 

Drag and Drop

Кроме того, что этот механизм теперь сделан более удобным для программистов сказать нечего. Равзе что пример спасет ситуацию.

 

Swing

Здесь я бы выделил несколько моментов (тем более еще есть в памяти конференция)

Вот какие моменты осветили:
1. TrayIcon — в общем радуйтесь — теперь иконка в трее будет там, где это только возможно
2. SpalshScreen — при старте приложения можно вывести картинку на время закгрузки. И если загрузка продолжается уже после старта JVM (вам что-то необходимо добавить, соеденить и прочая) вы можете управлять вашей картинкой. Т.е. что-то рисовать на ней.
3. Обработка текста на LCD. В общем идея следующая — при красивой прорисовке текста на LCD используеся не один цвет, а несколько для улучшения восприятия. Вот это и введено будет в 1.6
4. Улучшена скорость OpenGL и DirectX
5. Т.к. заканчивается срок лицензии на формат GIF будет сделан GIF-Writer с помощью которого можно будет записывать графически файлы
6. Улучшения для деплоя приложения — в общем какие-то изменения для WebStart. Что именно — не упомнить.
7. SWING — тут изменений было несколько, так что буду перечислять подряд
7.1. Look & Feel — теперь они будут использовать сами ОС и ваши приложения будут выглядеть так же как нативные приложения. И если вдруг вы введете новые темы в вашу ОС, то JAVA-риложения подхватят это тоже. Т.е. теперь LF используют данные из ОС, чтобы рисовать компоненты.
7.2. SwingWorker — записал, но к чему это относится — не могу вспомнить. По-моему к тредам про прорисовке. Т.е. что-то там стало лучше.
7.3. LayoutEnhacement — дополнительные возможности для лэйаутов.
7.4. Drag&Drop — теперь это будет очень просто реализовать
7.5. True Double Buffering — при перетаскиваниии окна поверж другого могли возникать пустые прямоугольники. Теперь этого не будет. Вообще прорисовка будет еще быстрее. Посмотрим.
7.6. Text Printing — была такая проблема, что текст мог раюиваться при печати пополам — вержняя часть строки на одной странице, нижняя — на другой. Теперь этой пробелмы не будет, утверждал докладчик.
7.7. JTable теперь будет уметь сортировать и фильтровать
7.8. В табуляторы теперь можно будет помещать любые компоненты. Т.е. теперь закладочки будут делать то, что вы от них захотите. Что достаточно удобно.

 

Я конечно же осветил не все. Но может быть кому-то данная статья поможет сориентироваться в нововведениях Java SE 6. И тогда буду считать, что писал эту статью не зря. Спасибо.

Leave a reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.