LINUX.ORG.RU

Java SE 8

 ,


0

4

Oracle анонсировал выпуск новой версии Java SE — 8.

В эту версию вошел ряд значительных изменений, в том числе:

  • В язык Java добавлена поддержка лямбда-функций. Разработчикам языка удалось добавить замыкания в язык таким образом, что их можно применять в большом количестве API, разработанных для предыдущих версий языка.
  • Stream API. В стандартную библиотеку коллекций были добавлены функции filter/map/reduce/т.п., позволяющие производить обработку и преобразование коллекций в функциональном стиле. Также были добавлены коллекции с автоматическим распараллеливанием операций преобразования с использованием Fork/Join Pool.
  • Nashorn — новый эффективный интерпретатор JavaScript.
  • Date & Time API — новое API для работы с датами и календарем, построенное на идеях популярной библиотеки Joda Time.

Коммерческая версия Oracle JDK построена на базе opensource реализации OpenJDK и содержит некоторое количество дополнений (наиболее значительное — Mission Control, средство для сбора анализа статистики работы JVM).

>>> Подробности

★★★★★

Ответ на: комментарий от vitalikp

То есть без модульности никак? Скажу более это то, без чего можно обойтись.

бгггггггг

это потому что у тебя Maven есть - есть такая иллюзия

но Maven не часть JDK, и вообще не самое лучшее поделие

stevejobs ★★★★☆ ()
Ответ на: комментарий от ii8_

Не поверишь, языки проектируют так, что бы вылавливать ошибки разработчки на стадии коспиляции. Java так не умеет c NPE. Зато умеет Intellij IDEA, чем я и пользуюсь

dizza ★★★★★ ()
Ответ на: комментарий от Rastafarra

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

скомпилирует, или segmentation fault уже отменили?:)

vitalikp ()
Ответ на: комментарий от qulinxao

так всё таки нынешнии замыкания в Жаве позволяют быть полноценым poor-man object али только poor-man value?

полноценный и poor в одном предложении уже странно )))

судя по гуглингу это poor-man object =)

VoDA ★★ ()
Ответ на: комментарий от vitalikp

slf4j решает задачи логирования удобным образом. Если нужно что-то еще, то log4j / logback / Java logging в помощь.

Речь не об этом. А о нормальной поддержки API логирования на уровне Java. То что есть сейчас назвать жалким подобием, язык не поворачивается.

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

VoDA ★★ ()
Ответ на: комментарий от VoDA

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

Новые API для дат они ж прикрутили, так что могли бы и новый logging добавить

maxcom ★★★★★ ()

Похоже, придется оставаться на Java6 навсегда. Такой язык испортили, суки!

anonymous ()
Ответ на: комментарий от VoDA

Текущая реализация довольно крива.

Это мягко сказано.

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

Не надо ее выправлять. Просто удалить и дать новый нормальный API. Вы когда-нибудь пробовали пользоваться тем, что там(в Java) существует без сторонних библиотек?

vitalikp ()

Ишь, Logging API им не нравится. System.out.println хватит всем!

CARS ★★★★ ()
Ответ на: комментарий от stevejobs

Почему же, я очень успешно использую свои решения на одном коммерческом проекте. Все, что мне надо это Ant для сборки проекта. А подтянуть нужные либы не проблема, меняются они не так часто.

vitalikp ()
Ответ на: комментарий от maxcom

Новые API для дат они ж прикрутили, так что могли бы и новый logging добавить

Так новый API дат разве отменил старый? java.util.Date как был, так и остался и API свой не поменял. Просто добавили удобную либу для манипулирования - java.time.*

А паять новый логгинг в параллель со старым - моветон. Хотя может и сделают ;)

VoDA ★★ ()
Ответ на: комментарий от shahid

4.2

It’s fascinating to see how Java, the most “strict” of modern languages is now using dynamic linkage to power its new Lambda expressions. It’s also an efficient approach, as no additional class loading and compilation is needed – the Lambda method is simply another private method in our class.

Это для «внутреннего» использования. Как ты такую лямбду передашь «наружу» (калбэк)?

yyk ★★★★★ ()
Ответ на: комментарий от dizza

спасибо, кэп. Говорю про то, что NPE это забота разработчика, а не компилятора. Если говнокидить, то никакой компилятор не поможит. Я про это.

ii8_ ★★★★ ()
Ответ на: комментарий от ii8_

NPE это забота разработчика, а не компилятора. Если говнокидить, то никакой компилятор не поможит.

Option поможет, даже говнокодить. через «е» и «о» соотвественно.

Rastafarra ★★★★ ()
Ответ на: комментарий от ii8_

Если ты хочешь что-то гарантировать директитивой, а язык не позволяет, то тебе остается только руками все отлавливать и фиксить по месту возникновения. Это и есть говнокодерство. Нормальное решение, это возможность запретить null для некоторых ссылок. Если язык так не умеет, то он говно

dizza ★★★★★ ()
Ответ на: комментарий от vitalikp

Не надо ее выправлять. Просто удалить и дать новый нормальный API.

Вот удалить и не канает по причине обратной совместимости. А нормальные API и так доступны ;)

Вы когда-нибудь пробовали пользоваться тем, что там(в Java) существует без сторонних библиотек?

Пробовал =)

VoDA ★★ ()
Ответ на: комментарий от VoDA

А паять новый логгинг в параллель со старым - моветон.

Нынешний java.util.logging такая хрень, что лучше бы его и небыло. Какие наркоманы его придумывали?
Хорошо что есть slf4j.

WatchCat ★★★★★ ()
Ответ на: комментарий от ii8_

спасибо, кэп. Говорю про то, что NPE это забота разработчика, а не компилятора. Если говнокидить, то никакой компилятор не поможит. Я про это.

NPE такая же проблема разработчика, как и утечка памяти в С/С++.

В C# в указании типа показываешь, что NotNull и не имеет проблем с NPE внутри кода. И компилятор защищает от передачи null-ов в NonNull зону.

Если вдруг сделают защиту от NPE на уровне компилятора, то это благо.

VoDA ★★ ()
Ответ на: комментарий от VoDA

Вот удалить и не канает по причине обратной совместимости. А нормальные API и так доступны ;)

Еще как канает, в старой версии оставить совместимость. В новой версии убрать это жалкое поделие.

vitalikp ()
Ответ на: комментарий от WatchCat

Нынешний java.util.logging такая хрень, что лучше бы его и небыло. Какие наркоманы его придумывали?

Те же, что и AWT разработали ;)

VoDA ★★ ()
Ответ на: комментарий от VoDA

В C# в указании типа показываешь, что NotNull и не имеет проблем с NPE внутри кода. И компилятор защищает от передачи null-ов в NonNull зону.

А в C# разве есть указатели? Не совсем корректно сравнивать его с С/С++. В C# нет указателей, нет проблем.

vitalikp ()
Ответ на: комментарий от WatchCat

Нынешний java.util.logging такая хрень, что лучше бы его и небыло. Какие наркоманы его придумывали?

он основан на log4j какой-то дорелизной версии

maxcom ★★★★★ ()
Ответ на: комментарий от Ttt

Банк-клиент Бифит ibank

Это поделие всё ещё не работает с jre новее 7u21?

anonymous ()
Ответ на: комментарий от maxcom

он основан на log4j какой-то дорелизной версии

http://habrahabr.ru/post/113145/

... На деле все получилось странно. IBM, в недрах которой возник log4j, оказалась довольно шустрой в вопросах формирования нового JSR47 (Java Logging API). В частности, ответственный за JSR47 товарищ Graham Hamilton решил взять за основу не log4j, а оригинальный IBM logging toolkit. ...

vitalikp ()
Ответ на: комментарий от VoDA

Дык есть уже продвижения. В java 8 добавили type usage annontations. Беда в том, кто это все будет проверять, в компиляторе в самом проверок нет. Есть только сырой checkers framework.

dizza ★★★★★ ()
Ответ на: комментарий от ii8_

Haskell, Kotlin. В Scala на уровне стиля колирования принято использовать только Option. Теперь еще в java 8 такое возможно с помощью плагинов, см мой комент про аннотации типов.

dizza ★★★★★ ()
Ответ на: комментарий от ii8_

Я примерно так и делаю. Это конечно лучше, чем ничего, но хотелось бы поддержки в компиляторе. Ну и стандартная библиотека не проаннотирована нихрена. В Kotlin пытаются это сделать.

dizza ★★★★★ ()

Атлассиановские поделия не взлетели на новой жабке :)

2014-03-19 04:17:02,723 FATAL [localhost-startStop-1] [UpgradeLauncher] Failed to initialise Bamboo container
java.lang.NullPointerException
        at com.atlassian.spring.container.ContainerManager.getComponent(ContainerManager.java:33)
        at com.atlassian.bamboo.upgrade.UpgradeLauncher.upgradeAndStartBamboo(UpgradeLauncher.java:88)
        at com.atlassian.bamboo.upgrade.UpgradeLauncher.contextInitialized(UpgradeLauncher.java:41)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4887)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5381)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:744)
bhfq ★★★★★ ()
Ответ на: комментарий от dizza

Дык есть уже продвижения. В java 8 добавили type usage annontations. Беда в том, кто это все будет проверять, в компиляторе в самом проверок нет. Есть только сырой checkers framework.

Те же JetBrains в IDEA могут чекать или уже чекают ;)

VoDA ★★ ()
Ответ на: комментарий от dizza

Вы наверно не различаете системное программирование и прикладное. У того и того разные задачи. Поэтому не надо путать теплое с мягким.

vitalikp ()
Ответ на: комментарий от PaRuSoft

для расширения функционала юзерами без перекомпиляции, интерпретаторы функций и подобная фигня делаются одной строчкой. Примеров применения JS масса. А еще есть Jython, JRuby, Groovy с кучей своих библиотек и фреймворков.

qwerky ()
Ответ на: комментарий от vitalikp

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

dizza ★★★★★ ()
Последнее исправление: dizza (всего исправлений: 1)
Ответ на: комментарий от dizza

Не верю что в этом вопросе есть разница.

Есть.

Принцип, один и тот же. Нужны инструменты, которые помогают решать определенные проблемы.

Проблемы бывают разные:)

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

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

Я так понимаю вы о том, что в системном программировании выбор инструментов меньше, и приходится жрать то говно, которое дают.

Я бы сказал больше, но у меня честно нет желания объяснять элементарные вещи.

vitalikp ()
Ответ на: комментарий от soslow

Ну и в чем проблема? Зачем вообще мутировать переменные из внешнего контекста?

anonymous ()
Ответ на: комментарий от Rastafarra

Штоа? нпе - это почти всегда рантайм-косяк. Теперь, со стандартными (а не зоопарком от разных анализаторов, иде и т.д.) @Nonnull/@Nullable, конечно, станет проще анализировать, проверять и отлавливать всякие мелочи.

anonymous ()
Ответ на: комментарий от ZenitharChampion

Гипертрейдинг - это что-то из словаря начинающего биткойнщика?

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.