Предварительное слово к изданию Java SE 7
Издание Java® SE 7 Спецификации языка программирования Java описывает все новые функции, добавленные в язык программирования Java в Java SE 7. Оно также интегрирует изменения, внесённые в язык программирования Java в период обслуживания с момента третьего издания 2005 года.
Читатели могут направить отзывы об ошибках и неоднозначностях в Спецификации языка программирования Java в jls-comments_ww@oracle.com.
Большинство новых функций в этом издании были определены JSR 334, Небольшие улучшения языка программирования Java, под руководством Джо Дарси с группой экспертов из Джошуа Блоха, Брюса Чапмена, Алексея Кудравцева, Марка Махие, Тима Пейерлса и Оливье Томана. Происхождение этих функций лежит в проекте Project Coin, OpenJDK-проекте, запущенном в 2009 году с целью «Упрощения повседневных задач программистов». Проект собирал предложения от сообщества Java для создания широко полезных языковых функций, которые по сравнению с «большими» функциями, такими как обобщения, были относительно «малыми» по своей спецификации, реализации и тестированию.
После тысяч писем и шести десятков предложений были приняты предложения от Джошуа Блоха (выражение try-с-ресурсами), Дерека Фостера/Брюса Чапмена (улучшения литералов), Нила Гафтера (много-catch и точное переброс исключений), Боба Ли (упрощённый вызов методов с переменным числом аргументов) и Джерри Мэнсона (улучшенное выведение типов для создания экземпляров, т.е. синтаксис «алмаза»). Также была принята популярная функция «строки в операторе switch». Особая благодарность Тому Баллу, Стиву Колборну, Реми Фораксу, Шамсу Махмуду Имаму, Джеймсу Лоудену и всем, кто представил интересные предложения и продуманные комментарии в Project Coin. В течение проекта были важны вклад Мэнди Чунг, Джона Гиббонса, Брайана Гоетца, Дэвида Холмса и Дэнна Смита в области, начиная от поддержки библиотек и заканчивая спецификацией языка. Стюарт Маркс руководил усилиями по «оцифровке» функций для применения к кодовой базе Oracle JDK, как для проверки их полезности, так и для разработки соглашений для более широкого использования.
Синтаксис «алмаза» и точный переброс исключений придают выведению типов новую значимость в языке программирования Java. В значительной степени выведение типов полезно только в том случае, если оно генерирует типы не менее специфические, чем в явно типизированной программе до Java SE 7. В противном случае новый код может посчитать выведение типов недостаточным, а миграция от явных к выведенным типам в существующем коде будет рискованной. Чтобы снизить риск, Джо Дарси и Маурицио Чимадаморе измерили эффективность различных схем вывода типов на большом корпусе открытого исходного кода Java. Такое «количественное проектирование языка» существенно повышает уверенность в пригодности и безопасности окончательной функции. Задача роста зрелого языка с миллионами разработчиков частично компенсируется возможностью разработчиков языка учиться на реальном коде разработчиков.
Платформа Java SE 7 добавляет функции, ориентированные на языки, отличные от Java, эффективно расширяя вычислительную модель платформы. Без изменений язык программирования Java не смог бы получить доступ к или даже выразить некоторые из этих функций. Его статическая система типов испытывает особые трудности при вызове кода, написанного на динамически типизированных языках. В результате вызов методов в языке программирования Java был изменён для поддержки вызова обработчиков методов, как определено в JSR 292, Динамически типизированные языки на платформе Java.
Команде Java Compatibility Kit (JCK), чья работа помогает в проверке этой спецификации, выражается огромная благодарность: Леонид Арбузов, Алексей Гаврилов, Юлия Новожилова, Сергей Резник и Виктор Рудометов. Многие другие коллеги из Oracle (прошлые или нынешние) также оказали ценную поддержку этой спецификации: Удай Дханиконда, Джейн Коэн, Адам Мессингер, Марк Рейнхолд, Жорж Сааб, Билл Шэннон и Бернард Траверсат.
Следующие лица внесли множество ценных комментариев, которые улучшили эту спецификацию: Дж. Стивен Адамчик, Петер Ахе, Давиде Анкона, Майкл Бэйли, Дмитрий Батрак, Джошуа Блох, Кевин Бурриллон, Ричард Босворд, Мартин Бравенбоэр, Мартин Буххольц, Дидье Крюэт, Гленн Колман, Нил Гафтер, Джим Холмлунд, Рик Холт, Филипп Муле, Билл Пуг, Владимир Решетников, Джон Спейсер, Роберт Строуд и Матиас Ульбрих.
Это издание является первым, написанным в формате DocBook XML. Данные метаданных в XML-разметке образуют своего рода статическую систему типов, классифицируя каждый абзац по его роли, например, как определение или ошибка. Вознаграждение — это значительно более чёткое тестирование соответствия. Большое спасибо Роберту Стейтону за обмен своим обширным опытом работы с DocBook и за помощь в представлении DocBook в традиционном стиле внешнего вида Спецификации языка программирования Java.
© Oracle and/or its affiliates. All rights reserved.
Licensed under the Oracle Technology Network License Agreement.