Статьи

Обзор новых возможностей Java SE 8: большие перемены в мире разработки Java

Я горжусь тем, что являюсь одним из членов команды accept-OpenJDK, как и другие профессиональные члены команды, но присоединился к нам за последние 8 месяцев, и мы прошли все этапы разработки Java SE 8 , компиляции, написания кода, обсуждений и т. Д., Пока не воплотим их в жизнь. , Он выпущен 18 марта 2014 года и теперь доступен для вас.

Я рад объявить об этой серии « Тур по новым функциям Java SE 8 », которую я собираюсь написать с примерами, упрощающими получение знаний о Java SE 8 , опыт разработки, новые функции и API-интерфейсы, которые будут использовать ваши знания, улучшить способ кодирования, а также повысить производительность. Я надеюсь, вам понравится, как я пишу это.

Мы познакомимся с новыми основными и важными функциями Java SE 8 (проекты и API), платформы, предназначенной для поддержки более быстрой и простой разработки Java. Мы узнаем о Project Lambda , новом синтаксисе для поддержки лямбда-выражений в коде Java.

Проверка нового Stream API для обработки коллекций и управления параллельной обработкой.

Вычисление временных интервалов с помощью API DateTime для представления, управления и вычисления значений даты и времени.

В дополнение к Nashorn, новый движок для лучшей поддержки использования кода JavaScript с виртуальной машиной Java.

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

Чтобы узнать больше о возможностях и руководствах по Java SE 8, я советую вам обратиться к официальному сайту Java Tutorial и документации по Java SE 8 java API .

Темы, которые мы собираемся охватить в этой серии, будут включать:

  1. Установка Java SE 8, заметки и советы.
  2. Представляя Java SE 8 основных функций, большие изменения.
  3. Работа с лямбда- выражениями и ссылками на методы.
  4. Обход коллекций с потоками.
  5. Вычисление временных интервалов с помощью нового API DateTime
  6. Запуск JavaScript из Java с помощью Nashorn .
  7. Разные новые функции и изменения API.
  1. Установка Java SE 8, заметки и советы.

    1. Установка Java SE 8 в Windows

      Чтобы запустить Java SE 8 в Microsoft Windows, сначала проверьте, какая у вас версия. Java SE 8 поддерживается в Windows 8, 7, Vista и XP. В частности, вам понадобятся эти версии. Для Windows 8 или 8.1 вам понадобится настольная версия Windows. Windows RT не поддерживается. Вы можете запустить Java SE 8 в любой версии Windows 7 и в самых последних версиях Windows Vista и Windows XP. В серверных версиях Windows вы можете запустить 2008 и 64-разрядную версии 2012. Если вы хотите работать с Java-апплетами, вам потребуется 64-разрядный браузер, к ним могут относиться Internet Explorer 7.0 и выше, Firefox 3.6 и выше, и Google Chrome, который поддерживается в Windows, но не в Mac. Вы можете скачать Java Developer Kit для Java SE 8 с

      1. URL java.oracle.com Это приведет вас к текущей домашней странице Java.
      2. Нажмите Java SE.
      3. Под Топ загрузок. Затем нажмите на ссылку Скачать для Java 8.
    2. Установка Java SE 8 на Mac

      Для работы с Java SE 8 в Mac OS X у вас должен быть Mac на базе Intel, работающий под управлением Mac OS X 10.7.3, то есть Lion или более поздней версии. Если у вас более старые версии Mac, вы не сможете программировать или запускать приложения Java 8. Для установки Java SE 8 вам потребуются права администратора на вашем Mac. А для запуска Java-апплетов в браузере вам необходимо использовать 64-битный браузер, такой как Safari или Firefox. Google Chrome — это 32-битный браузер , и он не будет работать для этой цели . Как описано выше при установке Java SE на Windows, этот же сайт имеет версию .dmg для MAC OS для загрузки и установки. На самом деле содержит все версии операционных систем. Тем не менее, наш фокус здесь будет на Windows и MAC.

    Теперь вы готовы начать программирование с Java SE 8 на платформах Windows и MAC OS X.

    После того, как мы, вероятно, установили Java SE 8, давайте углубимся в первый пункт и вкратце рассмотрим основные функции Java SE 8, чтобы начать наш тур по написанию кода в нашей любимой IDE.

  2. Представляя Java SE 8 основных функций, большие изменения.

    Обзор JSR 337: выпуск Java SE 8 Содержание

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

    JSR 335: лямбда-выражения

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

    JSR 310: API даты и времени

    Существует новый API для управления датами и временем. Замена старых классов. Эти старые классы все еще находятся в среде выполнения Java, но по мере создания новых приложений вам может потребоваться перейти к этому новому набору возможностей, которые позволят вам упростить код и стать немного более интуитивно понятным в программировании. Существуют новые классы для управления локальными датами, временем и часовыми поясами, а также для расчета различий между разными временами.

    Stream API

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

    Проект Нашорн

    Движок Nashorn JavaScript также является новым для Java SE 8. Это совершенно новый движок JavaScript, написанный с нуля, который позволяет кодировать на JavaScript, но позволяет интегрировать классы и объекты Java. Цель Nashorn — реализовать облегченную высокопроизводительную среду выполнения JavaScript в Java с собственной JVM. Этот проект предназначен для того, чтобы позволить разработчикам Java встраивать JavaScript в приложения Java через JSR-223 и разрабатывать автономные приложения JavaScript с помощью инструмента командной строки jrunscript. В статье о Nashorn я опишу, как запускать код Nashorn из командной строки , Но также как написать JavaScript в отдельных файлах, а затем выполнить эти файлы из вашего кода Java.

    Улучшения API параллелизма.

    Есть также улучшения в инфраструктуре параллелизма, которая позволяет вам управлять и накапливать значения в нескольких потоках. Также есть много мелких изменений.

    Строка, числа есть новые инструменты

    Появились новые инструменты для создания списков с разделителями в строковом классе и других новых классах. Существуют инструменты для агрегации чисел, включая целые, легкие, двойные и т. Д.

    Разное Новые функции

    Есть также инструменты для лучшей работы по обнаружению нулевых ситуаций, и я опишу все это в этой серии.

    И я опишу, как работать с файлами, используя новые удобные методы.

Итак, когда доступна Java SE 8?

Ответ сейчас. Он был выпущен 18 марта 2014 года. Для разработчиков, которые используют Java для создания клиентских приложений на сайте, полнофункциональная среда интернет-приложений JavaFX теперь поддерживает Java 8. И большинство поставщиков Java Enterprise Edition также поддерживают Java 8. Переход на Java SE 8 сразу зависит от типа проекта, над которым вы работаете.

Для многих серверных и клиентских приложений сайта это доступно сразу.

Еще не для Android.

Остерегайтесь разработчиков Android; На данный момент синтаксис и API Java SE 8 не поддерживаются в Android.

Только недавно Android перешел на новый синтаксис Java 7. И так, может пройти некоторое время, прежде чем Android поддержит этот новейший синтаксис или новейшие API. Но для всех других разработчиков Java стоит взглянуть на эти новые возможности.

А как насчет IDE?

Java SE 8 поддерживается всеми основными средами разработки Java. Включая Netbeans Oracle, Intellij Idea и Eclipse . Для этой серии я буду делать все свои демонстрации в Netbeans, используя Netbeans, версия 8, которую можно скачать с https://netbeans.org/downloads/ .

Однако прежде чем мы углубимся в эту серию, давайте сначала проверим, что мы, вероятно, установили Java SE 8, и запустим новый проект под Netbeans , который будет содержать весь код, который мы собираемся написать. Затем разработайте лямбда-код, чтобы проверить наш проект, работает ли он или нет, вероятно, с Java SE 8.

В качестве альтернативы вы можете загрузить исходный код серии из моей учетной записи Github, открыть его с помощью Netbeans и следить за тем, что я покажу в следующем, и в следующем коде серии.

Проект на Github: https://github.com/mohamed-taman/JavaSE8-Features

Привет мир приложение на Java SE 8 с лямбда-выражением.

Шаги (не требуется, если вы перемещаетесь по моему коду):

  1. Откройте NetBeans 8 -> из файла -> Новый проект -> слева, выберите Maven -> справа и выберите Приложение Java -> Нажмите «Далее».
  2. Следуйте приведенному ниже определению переменных снимка экрана или измените свои любимые имена и значения -> затем нажмите «Готово».

    JDK8-SES-P1-1

  3. Если все в порядке, вы должны иметь следующую структуру в навигаторе проекта:

    JDK8-SES-P1-2

  4. Нажмите «Проект Java8Features» -> « Файл» , в верхнем меню -> « Свойства проекта» .
  5. Под Категория -> Слева выберите Источник , затем проверьте, что «Источник / Двоичный формат» равен 1,8. -> Слева откройте Build и выберите Compiler , затем убедитесь, что «Java Platform» указывает на вашу текущую установку JDK 8 -> Нажмите Ok .
  6. Если JDK 8 не представлен, перейдите в раздел Инструменты -> Выбор, Java Платформы -> Добавить платформу -> Затем выберите Java Standard Edition ->, затем укажите установленный JDK 8.
  7. Теперь наш проект настроен для работы с Java 8, поэтому давайте добавим немного лямбда-кода.
  8. В пакете «eg.com.tm.java8.features» щелкните правой кнопкой мыши и выберите в меню «Создать» -> « Интерфейс Java» -> «Назовите его для печати» в обзорном пакете «eg.com.tm.java8.features.overview» -> нажмите Готово .
  9. Реализуйте интерфейс для печати следующим образом:
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
      /*
     * Copyright (C) 2014 mohamed_taman
     *
     * This program is free software: you can redistribute it and/or modify
     * it under the terms of the GNU General Public License as published by
     * the Free Software Foundation, either version 3 of the License, or
     * (at your option) any later version.
     *
     * This program is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     * GNU General Public License for more details.
     *
     * You should have received a copy of the GNU General Public License
     * along with this program.  If not, see <http://www.gnu.org/licenses/>.
     */
      
    package eg.com.tm.java8.features.overview;
      
    /**
     *
     * @author mohamed_taman
     */
    @FunctionalInterface
    public interface Printable {
          
        public void print();
    }
  10. В том же пакете добавьте следующий класс с именем «Print» , метод main которого будет следующим:
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    /*
     * Copyright (C) 2014 mohamed_taman
     *
     * This program is free software: you can redistribute it and/or modify
     * it under the terms of the GNU General Public License as published by
     * the Free Software Foundation, either version 3 of the License, or
     * (at your option) any later version.
     *
     * This program is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     * GNU General Public License for more details.
     *
     * You should have received a copy of the GNU General Public License
     * along with this program.  If not, see <http://www.gnu.org/licenses/>.
     */
      
    package eg.com.tm.java8.features.overview;
      
    import static java.lang.System.out;
    /**
     *
     * @author mohamed_taman
     */
    public class Print {
          
        public static void main(String[] args) {
             
            Printable job = ()-> out.println("Java SE 8 is working "
                                            + "and Lambda Expression too.");
              
            job.print();
        }
          
    }
  11. Щелкните правой кнопкой мыши на классе Print и выберите Run . Если все в порядке, вы должны увидеть следующий результат.
    1
    2
    3
    4
    5
    6
    7
    ------------------------------------------------------------------------
    Building Java8Features 1.0-SNAPSHOT
    ------------------------------------------------------------------------
    --- exec-maven-plugin:1.2.1:exec (default-cli) @ Java8Features ---
    Java SE 8 is working and Lambda Expression too.
    ------------------------------------------------------------------------
    BUILD SUCCESS
  12. Поздравляем, ваш проект Java SE 8 работает отлично, давайте объясним, что мы написали.

    Большая часть этого кода будет работать на Java 7 , но здесь есть аннотация, добавленная в Java SE 8 , FunctionalInterface . Если ваша среда Netbeans неправильно настроена для Java 8, эта аннотация вызовет ошибку, поскольку она не будет распознана как действительный код Java. Я не вижу ошибки, так что это хороший знак того, что Eclipse работает, как я и надеялся.

    Далее я открою определение этого класса с именем Print.java . Это класс с методом main, поэтому я могу запустить его как консольное приложение, и у него есть критическая строка нового синтаксиса Java 8.

    Он создает экземпляр того функционального интерфейса, который я только что показал вам, используя лямбда-выражение, стиль синтаксиса, которого не было в Java до Java 8. Я объясню, что этот синтаксис делает очень рано, в следующей статье.

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

    Я нажму кнопку «Выполнить» на панели инструментов и в консоли увижу успешный результат. Я создал объект, который является экземпляром этого интерфейса, используя лямбда-выражение. И я вызвал его метод, и он выводит строку на консоль. Так что, если все это работает, вы в отличной форме. Вы готовы начать программирование с Java SE 8 в Netbeans. Если по пути у вас возникли проблемы, вернитесь к предыдущим шагам и пройдите по ним. Один шаг за раз .

Ресурсы:

  1. Учебники по Java, лямбда-выражения
  2. JSR 310: API даты и времени
  3. JSR 337: Java SE 8 Release Содержание
  4. Сайт OpenJDK
  5. Платформа Java, стандартное издание 8, спецификация API