История версий Java. Изменения в try-with-resources

22.04.2019

Песочница

крепыш 26 мая 2011 в 23:51

Изучение Java и получение «Java SE 6 Programmer» сертификата

  • Чулан *

Привет, Хабр!
Хочу поделится историей, как я (18-летний студент) взялся всерьёз за изучение Java SE 6 и как результат получил сертификат «Oracle Certified Professional, Java SE 6 Programmer».
Пост охватывает самые последние реалии получения сертификата и компиляцию ссылок на другие статьи, книги, тесты.
Кому интересно получение такой замечательной бумажки - прошу под кат…

1. Зачем нужна сертификация?

Раз вы здесь, то скорее всего уже знаете ответ на этот вопрос. Скажу о себе.

  • Благодаря подготовке к сертификации я методично и по нескольку раз изучил все основные разделы языка, читая подготовительные книги
  • При подготовке на тестах нашёл свои слабые места и устранил их
  • Получил знания по разработке программ, практических применениях ООП, познакомился с Design Patterns
  • Практически с нуля поднял свои знания по чтению английcкой технической литературы (у меня крайне плохо с языком, скорей всего хуже чем у вас)
  • Благодаря получению бумажки я формально закрепил результат изучения
  • Повысил самооценку (практически-полезных достижений в программировании пока не много, олимпиады не в счёт)
Я пока не искал себе работу, но сертификация должна помочь в этом, собственно выделится среди других студентиков-новичков было основной целью

2. Как происходит сдача
Сдаётся экзамен в авторизированном компанией Pearson VUE центре. Раньше был ещё Prometric, но с начала мая 2011 он не работает с Oracle. Стоимость (на март 2011) 120$ . Скидки для студентов были при Sun, сейчас их отменили. Язык русский или английский, я выбрал английский, т.к. говорят, что в русском кривой перевод, да и повод был поднять уровень языка.
Обатите внимание, что при оформлении заявки на экзамен в графе дата будет стоять сначала месяц, потом день. Американская система.
Экзамен идёт 3 часа, я закончил и дважды всё проверил за 2. В кабинете находится администратор и камеры. Перед началом просят выложить всю электронику в соседнем кабинете, выдают маркер и листок.
Сдаётся на компьютере, в десктопном приложении. 60 вопросов в формате теста. 1 или несколько вариантов ответов, если несколько - об этом сообщается. Так же есть задания на перетаскивание кусков в кода программу с недостающими кусками. Пример можете найти в онлайн-симуляторе Wizlabs, ссылка будет ниже.

Вот собственно и всё то, чем я руководствовался при подготовке. Информации очень много, однако если понимать что происходит - язык учится без проблем.
В сумме ушло месяц на размеренное чтение Эккеля и 10 дней задротства второй книги и тестов.
После сдачи сертификата будет возможность изменить своё имя, если опечатались, изменить адрес. Мне (Гатчина) сертификат прибыл ровно через 50 дней после сдачи, из Дублина.

Успехов!

Теги: java 6, сертификация

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.

Ожидается, что новая версия Java 9 выйдет уже 27 июля 2017 года. Давайте разберёмся, какие функции появятся, и расскажем, зачем они нужны.

Вот список важных нововведений Java 9:

С помощью примеров расскажем подробнее об этих функциях.

JShell

REPL (англ. read-eval-print loop) - система для интерактивного программирования в консоли. То есть если пользователь вводит строку кода, в консоли появляется результат её выполнения и этот процесс повторяется.

Oracle представила новый инструмент под названием «JShell». Он используется для тестирования и использования в консоли разных конструкций, например классов, интерфейсов, перечислений, объектов, операторов и т.д.

Кстати, уже сейчас можно загрузить бета-версию JDK 9, скачав её с официального сайта .

Простейший пример работы с JShell:

G:\>jshell | Welcome to JShell -- Version 9-ea | For an introduction type: /help intro jshell> int a = 10 a ==> 10 jshell> System.out.println("a value = " + a) a value = 10

Неизменяемые объекты List, Set и Map «из коробки»

Oracle представила несколько удобных методов для создания неизменяемых List, Set, Map и Map.Entry объектов без использования дополнительных классов

В Java SE 8 и более ранних версиях мы можем использовать Collections.unmodifiableXXX для создания неизменяемых объектов коллекций. К примеру, если мы хотим создать Immutable List , мы будем использовать Collections.unmodifiableList метод.

List и Set интерфейсы имеют of() методы. Примеры их использования можно увидеть ниже:

List immutableList = List.of(); // пустой неизменяемый список List immutableList = List.of("one","two","three"); // неизменяемый список, содержащий информацию

Map имеет два набора методов: of() методы и ofEntries() методы для создания объектов Immutable Map и Map.Entry.

Jshell> Map emptyImmutableMap = Map.of() emptyImmutableMap ==> {} // пустое неизменяемое отображение jshell> Map nonemptyImmutableMap = Map.of(1, "one", 2, "two", 3, "three") nonemptyImmutableMap ==> {2=two, 3=three, 1=one} // неизменяемое отображение

Private методы в интерфейсах

В Java 8 мы можем обеспечивать реализацию метода в интерфейсах, используя default и static методы. Однако мы не можем создавать private методы в интерфейсах.
Для избавления от нагромождения и переизбытка кода Oracle собирается добавить private методы в интерфейсы Java SE 9. Начиная с девятой версии, мы также сможем создавать private static методы в интерфейсах с помощью private.

Создание реализации метода для интерфейса по умолчанию:

Public interface Card { private Long createCardID() { // Реализация метода происходит здесь. } private static void displayCardDetails() { // Реализация метода происходит здесь. } }

Модульная система

Одним из самых значительных изменений является появление модульной системы. До Java 9 мы использовали JAR-файлы для разработки приложений, базирующихся на Java. Однако, эта архитектура имеет несколько ограничений и недостатков. Для их устранения и внедрили модульную систему . Это нововведение является частью проекта Jigsaw , который разрабатывается для того, чтобы программисты могли разбивать программы на независимые и межпрограммные модули.

Вот некоторые из функций этой системы:

  • модульная JDK;
  • модульный исходный код Java;
  • модульные run-time изображения;
  • инкапсуляция внутренних API;
  • система модульной платформы;

JDK 9 поставляется с 92 модулями. Мы можем использовать их или создать свои, например:

Module com.foo.bar { }

Каждый модуль имеет имя, связанный код и другие ресурсы.

Улучшение API

Ожидается, что в Java SE 9 будут произведены улучшения по части API. Будут добавлены несколько новых классов и методов для более удобного управления действиями операционной системы.
Два новых интерфейса в Process API:

  • java.lang.ProcessHandle;
  • java.lang.ProcessHandle.Info.

Пример Process API:

ProcessHandle currentProcess = ProcessHandle.current(); System.out.println("Current Process Id: = " + currentProcess.getPid());

Здесь нами был создан объект типа ProcessHandle для работы с действиями операционной системе.

Изменения в try-with-resources

Как мы знаем, в Java SE 7 появилась новая конструкция обработки исключений Try-With-Resources для автоматического управления ресурсами. В Java SE 9 собираются внести несколько изменений в эту конструкцию, чтобы повысить читаемость.
Пример в Java SE 7:

Void testARM_Before_Java9() throws IOException { BufferedReader reader1 = new BufferedReader(new FileReader("journaldev.txt")); try (BufferedReader reader2 = reader1) { System.out.println(reader2.readLine()); } }

Пример в Java 9:

Void testARM_Java9() throws IOException { BufferedReader reader1 = new BufferedReader(new FileReader("journaldev.txt")); try (reader1) { System.out.println(reader1.readLine()); } }

Можно заметить, что в новой версии, после try не обязательно объявлять новую переменную.

Новшества в CompletableFuture API

В Java 9 Oracle также собирается улучшить CompletableFuture API для решения проблем, появившихся в Java SE 8. В планах добавить задержки и тайм-ауты, дополнительные методы и улучшить подклассы.

Executor exe = CompletableFuture.delayedExecutor(50L, TimeUnit.SECONDS);

Здесь delayedExecutor() - static метод, используемый для возврата исполнителя, после заданной задержки.

Реактивное программирование

Для тех, кто ещё не знаком с парадигмой реактивного программирования, советуем прочитать наше в тему с примерами.
В Scala, Play, Akka уже были интегрированы reactive streams. Oracle решила добавить Reactive Streams API в Java SE 9.

Java SE 9 Reactive Streams API - фреймворк для реализации асинхронных, масштабируемых и параллельных приложений с использованием Java.

В Java SE 9 появятся следующие API:

  • java.util.concurrent.Flow;
  • java.util.concurrent.Flow.Publisher;
  • java.util.concurrent.Flow.Subscriber;
  • java.util.concurrent.Flow.Processor.

Diamond оператор для анонимных классов

Предположим, что у нас есть класс Box и мы хотим сделать его анонимным.
Вот как выглядит этот процесс в Java 8:

Box createBox(T content) { // Нужно поставить "T" здесь 🙁 return new Box(content) { }; }

Разве не очевидно, что Box должен быть типа T? Компилятор в случае не-анонимного класса выбрал бы нужный тип, так почему бы не сделать то же самое с анонимным?

Проблема в не обозначаемых (англ. non-denotable) типах, которые распознаются компилятором, а JVM - нет. (Такой случай может быть обработан компилятором, но вопрос - как корректно передать его JVM.)

Поэтому Diamond оператор не допускался в использовании с анонимными классами. Теперь же это возможно.

Вот как это выглядит в Java 9:

Class inJava { Box createBox(T content) { // Java 9 выводит ‘T’, потому что этот тип обозначаемый return new Box<>(content) { }; } Box createCrazyBox(Object content) { List innerList = Arrays.asList(content); // А этот тип не выводится, так как не можем его обозначить: // return new Box<>(innerList) { }; // Вместо этого обозначаем тот тип, который нам нужен: return new Box>(innerList) { }; } }

Дополнительные улучшения в классах

Stream emp = getEmployee(id); Stream empStream = emp.flatMap(Optional::stream);

Здесь используется метод Optional.stream(), который конвертирует всё в поток Employee.

Улучшения Stream API

В новой версии появятся как минимум четыре метода java.util.Stream . Как и stream, все они будут стандартными. Наиболее важными являются dropWhile и takeWhile методы.
Если вы знакомы с языком Scala или функциональным программированием, вы обязательно узнаете эти методы.

Простейшее применение stream:

Jshell> Stream.of(1,2,3,4,5,6,7,8,9,10).takeWhile(i -> i < 5).forEach(System.out::println);

Расширенные аннотации @Deprecated

До Java 9 @Deprecated - просто интерфейс-маркер. Многие разработчики . Их услышали и добавили возможности работы с устаревшими API. Например, появились инструменты для их анализа - forRemoval и since .

HTTP/2 клиент

Oracle планирует выкатить новый HTTP-клиент для поддержки протоколов HTTP/2 и WebSocket. Они заменяют HttpURLConnection API на новый, более производительный.
Новый API будет представлен в пакете «java.net.http». Он поддерживает как синхронный, так и асинхронный режимы.

Новый API можно посмотреть

И некоторых прочих вкусняшек в JDK8, но тем не менее, и этот релиз привнёс что-то полезное в арсенал java-разработчика. Под катом можно найти более детальный обзор новшеств. По наиболее интересным из них, скорее всего, будут написаны дополнительные статьи с примерами использования.

Виртуальная машина

InvokeDynamic

Давно ожидаемое любителями динамических языков программирования решение, позволяющее взаимодействовать с динамическими языками практически без потери производительности. Разработчики JVM очень хвалят это творение, но, к сожалению, пока не предоставили примеров его использования в реальной жизни. На страничке проекта есть немного документации, но она совсем не тривиальна. Потому на этот счёт можно ожидать статьи.

Строгая проверка бинарных класс-файлов

В Java 7 ввели новый верификатор , получивший название «проверяющего типы» (typechecking verifier), который работает несколько быстрее и поддерживает новые языковые фичи. Этот верификатор обязательно будет использоваться для бинарников версии 51 и более, то есть >= SE7.

Синтаксический сахар

Про Project Coin уже писали много, в том числе и на хабре, поэтому в дальнейшем представлении он, полагаю, не нуждается. Впрочем, вы всегда можете исправить моё заблуждение в комментариях:) Стоит только отметить, что coin разбили на две части, и наиболее трепетно ожидаемая, содержащая приятности вроде упрощённого создания коллекций, в SE 7 не войдёт.

Изменения в ядре

Обновление архитектуры classloader"а

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

Метод close для URLClassLoader

Тут особо и говорить нечего: теперь можно освободить ресурсы, которые держит classloader. Подробнее .

Обновления для java.util.concurrent и коллекций

Новый релиз предоставляет множество новых полезных библиотек для многопоточных приложений. Об одной из них, Phaser , уже на хабре. Помимо него включены легковесный fork/join(UPD: ) и ещё некоторые барьеры, concurrent-версии деков на связных списках и thread-local генератор случайных чисел. Более подробное ожидание ожидается в отдельной статье.

Интернационализация

Unicode 6.0

Теперь последняя поддерживаемая версия Unicode стала 6.0.

Улучшение java.util.Locale

Теперь этот класс поддерживает IETF BCP 47(Метки для определения языков) и UTR 35(локализованную языковую разметку зыков)

Разделены локаль пользователя и локаль графического интерфейса

Теперь форматирование текста и отображение чего-либо на экране имеют независимые локали. Подробнее можно посмотреть в обновлённом javadoc .

Ввод-вывод и работа с сетью

NIO.2

Тоже не нуждающийся в особом представлении новый API для доступа к файловой системе, масштабироемого асинхронного IO-взаимодействия, полноценной работы с zip/jar архивами как с файловой системой и прочего. Все нововведения имеет смысл вынести в отдельный топик. Ознакомиться с официальной документацией можно .

Поддержка стандартов

Добавлена поддержка SCTP для Solaris, SDP для поддержки InfitiBand на Linux и Solaris, поддержка появившегося в Windows Vista стека IPv6 и поддержка TLS 1.2

Безопасность и шифрование

Теперь доступны из коробки стандартные алгоритмы эллиптических кривых. Правда, в официальном релизе не дали указаний относительно того, где их найти. Поверхностный поиск по javax.crypto результатов не дал.

Клиентская часть

Конвейер XRender для Java2D

Благодаря расширению XRender для X11, у Java2D появился доступ к большой части возможностей современных GPU.

Введение API для новых графических возможностей

В java 6u10 появилась поддержка новых фич вроде полупрозрачных окошек и окошек поизвольный формы, ровно как и смешивание тяжеловесной и легковесной графики. Теперь для этого появился API. Подробнее можно почитать в документации , и вполне возможно, что скоро на эту тему появится пост.

Новый look-and-feel

Добавлен новый look-and-feel. Как утверждают разработчики, он относится к новому поколению, но лично меня не впечатлило. Хотя, конечно, это всяко лучше, чем то, что было раньше. Скриншоты есть .

Новый декаратор JXLayer

Про него не найти особо подробной информации, есть ссылка на официальный проект .

Новый синтезатор звука

На замену старому проприетарному синтезатору пришэл новый, под названием Gervill . Разработчики его хвалят, но я ничего на этот счёт сказать не могу.

Web

Обновлён стек XML, теперь используются версии JAXP 1.4, JAXB 2.2a, and JAX-WS 2.2.

Управление

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

Итак, покрыта большая часть нововведений. Пожалуйста, отпишитесь в комментариях, о чём бы вы хотели прочитать подробнее.

JDK 1.0 (23 января 1996)

Кодовое имя Oak .

Первый выпуск. Первой стабильной версией стала JDK 1.0.2.

JDK 1.1 (19 февраля 1997)

Наиболее значимые дополнения:

  • обширное изменение событий библиотеки AWT
  • в язык добавлены внутренние классы
  • JavaBeans (классы в языке Java, написанные по определённым правилам. Они используются для объединения нескольких объектов в один для удобной передачи данных)
  • JDBC (соединение с базами данных) - платформенно-независимый промышленный стандарт взаимодействия Java-приложений с различными СУБД
  • RMI (программный интерфейс вызова удаленных методов)
  • ограниченная рефлексия (модификация во время выполнения невозможна, есть только наблюдение собственной структуры)

J2SE 1.2 (8 декабря 1998)

Кодовое имя Playground .

Следующей базовой версией Java стала версия Java 2, символизировавшая собой второе поколение. Первой версии Java 2 был присвоен номер 1.2. С появлением версии 2, SUN Microsystems стала выпускать Java в виде пакета J2SE (Java 2 Platform Standard Edition - Стандартная версия платформы Java 2) и теперь номера версий указываются применительно к этому продукту.

Java 2 , или Java 2.0 - дальнейшее развитие и усовершенствование спецификации исходного стандарта языка и платформы Java , на который теперь принято ссылаться как на Java 1.0. В настоящее время спецификация платформы Java 2 продолжает интенсивно развиваться и обогащаться, пополняясь новыми возможностями, особенно из за конкуренции с платформой.Net, перенявшей у Java ряд ключевых особенностей.

Основными усовершенствованиями Java 2 по сравнению с Java 1.0 являются:

  • Swing включен в спецификацию платформы Java 2
  • Policy файлы
  • Цифровые сертификаты пользователя
  • Библиотека Accessibility
  • Java 2D
  • Поддержка технологии drag-and-drop
  • Полная поддержка Unicode, включая поддержку ввода на японском, китайском и корейском языках
  • Поддержка воспроизведения аудиофайлов нескольких популярных форматов
  • Полная поддержка технологии CORBA
  • Включение в JDK для Java 2 JIT-компилятора, улучшенная производительность
  • Усовершенствования инструментальных средств JDK , включая поддержку профилирования Java-программ

J2SE 1.3 (8 мая 2000)

Кодовое имя Kestrel .

J2SE 1.4 (6 февраля 2002)

Кодовое имя Merlin .

J2SE 5.0 (30 сентября 2004)

Кодовое имя Tiger . Спецификация Java 5 была выпущена в сентябре 2004 года. В данной версии разработчики внесли в язык целый ряд принципиальных дополнений:

  • Перечислимые типы (enum). Ранее отсутствовавшие в Java типы оформлены по аналогии с C++, но при этом имеют ряд дополнительных возможностей.
    • Перечислимый тип является полноценным классом Java, то есть может иметь конструктор, поля, методы, в том числе скрытые и абстрактные.
    • Перечисление может реализовывать интерфейсы.
    • Для перечислений имеются встроенные методы, дающие возможность получения значений типа по имени, символьных значений, соответствующих именам, преобразования между номером и значением, проверки типа на то, что он является перечислимым.
  • Аннотации - возможность добавления в текст программы метаданных, не влияющих на выполнение кода, но допускающих использование для получения различных сведений о коде и его исполнении. Одновременно выпущен инструментарий для использования аннотированного кода. Одно из применений аннотаций - упрощение создания тестовых модулей для Java-кода.
  • Средства обобщённого программирования (generics) - механизм, аналогичный Eiffel (позже также появились и в C#, принципиально отличаются от шаблонов C++), дающий возможность создавать классы и методы с полями и параметрами произвольного объектного типа. С использованием данного механизма реализованы новые версии коллекций стандартной библиотеки Java.
  • Методы с неопределённым числом параметров.
  • Autoboxing/Unboxing - автоматическое преобразование между скалярными типами Java и соответствующими типами-врапперами (например, между int - Integer). Наличие такой возможности упрощает код, поскольку исключает необходимость в выполнении явных преобразований типов в очевидных случаях.
  • Разрешён импорт статических переменных.
  • В язык введён цикл по коллекции объектов (итератор, foreach).

Java SE 6 (11 декабря 2006)

Основная статья: История версий Java 6

Кодовое имя Codename Mustang .

Java SE 7.0 (7 июля 2011)

Java SE 7 Update 1

  • данный релиз содержит исправления уязвимостей безопасности
  • исправлено 6 ошибок

Java SE 7 Update 2

  • Новый JVM (Java HotSpot Virtual Machine, версия 22), который повышает надежность и производительность
  • Поддержка Oracle Solaris 11
  • Поддержка Firefox 5 и старше
  • JavaFX входит в состав Java SE

Java SE 7 Update 3

  • данный релиз содержит исправления 14 уязвимостей безопасности

Java SE 8.0

Ожидается в середине 2013 года . Будет содержать

См. также

Примечания

Ссылки


Wikimedia Foundation . 2010 .

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

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

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

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

Collection Framework

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

Интерфейсы:

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

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

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

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

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

ArrayDeque , ConcurrentSkipListSet , ConcurrentSkipListMap , LinckedBlockingDeque

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

Это – LinkedList , TreeSet , TreeMap.

Deployment (Java Web Start and Java Plug-in)

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

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

Internationalization Support

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

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

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

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

I / O Support

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

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

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

Console cons; char passwd; if ((cons = System.console()) != null && (passwd = cons.readPassword("[%s]", "Password:")) != null) { ... java.util.Arrays.fill(passwd, " "); }

Console cons ;

char passwd ;

if ((cons = System . console () ) != null && (passwd = cons . readPassword ("[%s]" , "Password:" ) ) != null ) {

. . .

java . util . Arrays . fill (passwd , " " ) ;

Также следует обратить внимание на новые методы в классе 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)

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

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-аутентификации и работы с куками.

Perfomance

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

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

Scripting

Security

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. И тогда буду считать, что писал эту статью не зря. Спасибо.