Все, что вы слышали о Java 8, сосредоточено вокруг выражений Lambda. Но это только часть Java 8. Java 8 имеет много новых функций - некоторые мощные новые классы и синтаксис, а также другие вещи, которые должны иметь с самого начала.
Я собираюсь представить 10 основных функций, которые, я думаю, стоит знать. По крайней мере, один или два из них также будут там, чтобы вы могли попробовать, так что давайте начнем!
1. Метод по умолчанию
Недавно добавленная особенность языка Java заключается в том, что вы можете добавить методы (называемые методами по умолчанию) в методы интерфейсов. Эти методы будут неявно добавлены в класс, который реализует этот интерфейс.
Это позволяет добавлять новые функции в существующие библиотеки, не нарушая код. Это, очевидно, улучшение. Но с другой стороны, это запутывает границы между интерфейсами и классами, потому что интерфейсы используются для определения контрактов, в то время как классы используются для определения конкретных реализаций. С другой стороны, это делает интерфейс более умным элегантным образом и избегает дублирования и расширения библиотек. Но с другой стороны, позже мы увидим, что метод интерфейса запрашивает это и преобразует его в бетонные классы. Дрожь ...
2. Процесс прекращения
Запуск внешнего процесса - это половина от того, что вы делаете - когда процесс вылетает, висит или потребляет 100% процессор, вам нужно вернуться назад и отладить его. Класс процессов теперь оснащен двумя новыми методами, которые помогут вам контролировать непослушные процессы.
Первый - это iSalive (), который позволяет вам проверить, работает ли процесс, не ожидая завершения процесса. Вторым более мощным методом является DeStrecatible (), который позволяет вам заставить процессы убийства, которые истекают или больше не нужны.
3. Stampedlocks
Сейчас есть что -то захватывающее. Никто не любит синхронизировать код. Это является виновником для снижения пропускной способности вашего приложения (особенно масштабируемых приложений) или, что более серьезно, вызывает приложение повесить трубку. Тем не менее, в какой -то момент у вас нет выбора.
Есть много способов ограничить доступ к критическим ресурсам многопоточным синхронным образом. Наиболее известными из них являются чтение записей (ReadWritelock) и реализации, связанные с ним. Это снижает конкуренцию за ресурсами, позволяя нескольким потокам получить доступ к одному и тому же ресурсу, но блокируя потоки, использующие ресурс. Это звучит хорошо в теории, но на самом деле этот замок довольно медленный, особенно когда существует большое количество записей.
Примечание: блокировка чтения-записки делит посетителей ресурсов на две категории: читатель и писатель. Читатель выполняет операции только для чтения на ресурсе, а писатель может управлять ресурсом.
Java 8 представляет совершенно новую блокировку Read-Write под названием Stampedlock. Этот замок не только быстрее, но и обеспечивает мощный набор блокировки оптимизма, с помощью которых вы можете получить блокировку считывателя за минимальную стоимость и даже не хотят операций записи во время выбора. После того, как выбор закончится, вы можете запросить блокировку, чтобы увидеть, есть ли операция записи во время выбора, и в этом случае вы можете выбрать, чтобы попробовать еще раз, обновить блокировку или сдаться.
Этот замок является очень мощным инструментом и нуждается в специальной статье, чтобы описать его. Я был так взволнован этой новой вещью, что был головокружительным и хорошо сделанным!
Для получения более подробной информации, пожалуйста, обратитесь к здесь
4. одновременные добавки
Это еще один маленький ребенок для тех, кто работает в многопоточных приложениях. Это простой и эффективный новый API для многопоточных счетчиков, который быстрее, чем использование AtomicInteger. Так чертовски круто!
5. Необязательные значения
О, нулевой указатель, кошмар для всех разработчиков Java. С самого начала (или, по крайней мере, в 1965 году) это было, вероятно, самым популярным исключением.
Опираясь на масштаб и Hashell, Java 8 имеет новый шаблон, называемый необязательным для инкапсулирования ссылок, которые могут быть нулевыми. Это ни в коем случае не серебряная пуля для прекращения NULL, это способ позволить дизайнеру API указать с уровня кода (а не на уровне документа), что нулевое значение может быть передано в метод или возвращено из метода для подготовки вызывающего абонента к нулевому значению. Следовательно, это может работать только под новым API, и предполагает, что вызывающий абонент не позволяет ссылке избежать инкапсуляции, что приводит к небезопасным безраздельным.
Я должен сказать, что я очень конфликтую с этой функцией. С одной стороны, есть большая проблема с NULL, поэтому я склонен делать все задолго до того, как произойдет NULL. Но с другой стороны, я сомневаюсь, что это удастся. Это связано с тем, что использование необязательных требует постоянных усилий от всей компании, но оно не имеет прямой ценности. Если это не решает, это, вероятно, будет заброшено.
Для получения дополнительной информации о необязательном, нажмите здесь
6. Анотировать все что угодно
Еще одно небольшое улучшение языка Java заключается в том, что аннотации теперь могут быть добавлены практически ко всему в вашем коде. В прошлом аннотации могли быть добавлены только в объявление класса или метода. Аннотации с использованием Java 8 могут быть добавлены в объявления переменных и параметров не только при передаче значения указанному типу, но и даже при распределении пространства для нового объекта. Это является частью того, чтобы сделать язык Java более дружелюбным и сфокусированным (наряду с инструментами документации Java и улучшениями API) посредством статического анализа и инструментов мастера, таких как Findbugs. Это отличная особенность, но больше таких вещей, как Invokedynamic, представленная в Java 7, и его реальная ценность - это то, что сообщество делает с ним.
7. Операция переполнения
Теперь вот серия методов, которые должны быть включены в основную библиотеку с самого начала. Одна из моих любимых привычек - отладка переполнения, когда Int превышает 2^32, а затем продолжает создавать эту печально известную ошибку случайным образом (например, «Как я получил это странное значение?»).
На этот раз нет серебряной пули, но существует ряд функций, которые управляют числами, которые бросают исключения, когда переполнение происходит таким образом, который является более терпимым, чем стандартный оператор +/*, который неявно вызывает переполнение. Если бы я был бы я, я бы установил его как режим по умолчанию).
8. Перевернение папки
Содержание итерационных деревьев каталогов появилось очень рано в поиске Google (в данном случае вы можете использовать apache.fileutils). Java 8
Добавлены 10 новых методов для файлов. Мой любимый - Walk (), который создает ленивый поток (важный для больших файловых систем) для итерации
Содержание структуры каталога.
9. Сильное генерация случайных чисел
Сегодняшние разговоры о уязвимости паролей и ключей являются обязательными. Безопасность программы - сложная проблема, и ее легко допустить. Это тоже то, что мне нравится
Причина нового метода Securerandom.getInstancestrong (), который может автоматически выбрать самый сильный генератор случайных чисел в JVM. Это уменьшается
Шансы на сбой генератора или слабого генератора получают по умолчанию, что приводит к вероятности, что ключ или значение шифрования легко взломано.
10. date.toinstant ()
Java 8 представляет совершенно новый API Date Time. Поскольку существующий API не очень хороший, это вполне понятно. Теперь Джода в течение многих лет сосредоточила и проникла на Java Date Time API. Однако даже с новым API все еще есть большая проблема - есть множество кодов и библиотек, которые используют старый API.
Мы все знаем, что столкнутся с этой проблемой, так что нам делать?
Поскольку Java 8 сделал довольно элегантно, новый метод Toinstant () был добавлен в класс даты, чтобы преобразовать его в новый API. Даже используя старую дату API (то же самое для обозримого будущего), он позволит вам быстро перейти на новый API.
Как вы думаете, что в статье имеют другие характеристики, которые не должны упоминаться, или вы не согласны с нашим анализом? Пожалуйста, прокомментируйте нас - это цель публикации!
Выше приведено сборник информации о новых функциях Java 8. Мы будем продолжать добавлять соответствующую информацию в будущем. Спасибо за поддержку этого сайта!