- PVSM.RU - https://www.pvsm.ru -

Дайджест интересных событий из мира Java, и вокруг нее #4 (06.06.2016 — 19.06.2016)

image

В этом выпуске

— Не успеваем: дедлайны Java 9 снова сдвигаются
— Спасаем Java EE: петиция Ларри Элиссону
Microsoft покупает LinkedIn
— Зачем отключать C2-компиляцию?
— Холивар: использовать assert или нет?
… и многое другое

1. Новости

1.1. Java 9: сроки плывут

Ссылка: http://mail.openjdk.java.net/pipermail/jdk9-dev/2016-June/004443.html [1]

Главный архитектор Java Марк Рейнхольд [2] нампомнил, что запланированные сроки «feature complete» майлстоуна уже прошли, но ряд фич Java 9 по прежнему не готовы. Речь идет о примерно 15 JEP-ах. В письме предлагается не поднимать панику, а планомерно завершать работу, ибо главное это фактическая готовность, и качество, а не формальные сроки.

image

Разумный подход. Однако стоит напомнить, что это не первый косяк со сроками. Все мы прекрасно знаем, насколько сложно укладываться в дедлайны при разработке. Но Java — это публичный продукт, за развитием которого следят миллионы разработчиков. Массовый пользователь не будет вникать, что такое Оракловский майлостоун [3], и что, дескать, он слабо привязан к датам. Это внутренняя кухня Oracle. Нам сказали «будет к такому-то числу», мы запасаемся попкорном, и ждем. Если обещанного не происходит, мы расстраиваемся, и начинаем перемывать косточки. Учитывая, продолжающиеся срывы сроков, Oracle имеет смысл поднажать на developer relations, что бы минимизировать репутационные издержки.

1.2. Спасаем Java EE: петиция Ларри Элиссону

Ссылка: https://www.change.org/p/larry-ellison-tell-oracle-to-move-forward-java-ee-as-a-critical-part-of-the-global-it-industry [4]

Вокруг Java EE продолжают кипеть страсти. Группа людей, называющая себя Java EE Guardians [5], подала петицию на имя CEO Oracle Ларри Элиссона, в надежде привлечь внимание топ-менеджмента компании к заморозке развития Java EE.

Лично мне тоже не совсем понятна политика Oracle по поводу Java EE. Очень интересно было бы послушать их комментарии. Если вы где-то их встречали, поделитесь пожалуйста ссылкой.

1.3. Microsoft покупает LinkedIn

Ссылка: http://www.cnbc.com/2016/06/13/microsoft-to-buy-linkedin.html [6]

Сумма сделки, как это водится в IT-мире, достаточно скромная — каких-то 26.2 миллиарда долларов. Теперь детище Билла Гейтца получит контроль над огромным количеством внутренних Java-проектов, созданных в LinkedIn за эти годы. Не исключено, что какие-то из этих наработок мигрируют в новые проекты Microsoft.

Так же сделка дала многим возможность пощеголять чувством юмора:

image

2. Почитать

2.1. Сборник материалов по внутренностям HotSpot

Ссылка: https://wiki.openjdk.java.net/display/HotSpot/Presentations [8]

Архитектор JVM John Rose [9] занялся сбором воедино материалов по внутренностям JVM. Пока там буквально несколько ссылок, но я надеюсь, что в будущем этот список будет расти. Так что добавляйте ссылку в «Избранное».

2.2. Статическим анализатором по OpenJDK

Ссылка: https://medium.com/@Coder_HarryLee/openjdk-check-by-pvs-studio-f25a2187b8a0#.obyfqnjbs [10]

Парни прошлись статическим анализаторам PVS Studio [11] по исходникам OpenJDK, и нашли там приличное количество проблем. Кривые проверки в if-else выражениях, забытые скобки, копипаста, отсутствующие проверки на NULL, и т.д… Можно сколь угодно скептически относится к анализаторам кода, но эти бездушные машины не зря едят свой хлеб.

2.3. (Не) используйте assert!

Ссылка: http://www.yegor256.com/2016/06/17/dont-use-java-assertions.html [12]

Егор Бугаенко [13] стремительным домкратом промчался по европейским конференцям, наделав много шуму своими радикальными взглядами на ООП. Досталось всем — и Хибернейту, и аннотациям, и много кому еще. Печальная участь постигла и assert-ы. В своем свежем посте Егор призывает отказаться от их использования, и полагаться исключительно на exceptions.

Взаимоотношения разработчиков и assert никогда не были простыми. Для одних это «активная» документация и халявные дополнительный «тесты». Для других это умышленная маскировка багов. Лично я assert люблю, и в нашем проекте их очень много [14]. Есть два простых правила: не проверять ими пользовательский ввод, и не заменять ими тесты. Следуйте этим правилам, и assert станет Вашим надежным помощником.

Что думаете по этому поводу? Используете ли Вы assert в своих проектах?

2.4. Уменьшаем memory footrpint Java-приложения

Ссылка: https://blog.buoyant.io/2016/06/17/small-memory-jvm-techniques-for-microservice-sidecars/ [15]

У парней из buoyant.io [16] один из продуктов стартует вспомогательные Java-процессы. И им очень хотелось, что бы эти процессы потребляли как можно меньше памяти. В итоге они добились желаемых результатов путем:
— Использования 32-битного режима
— Отключения C2

Второй подход вызывает вопросы, но если С1 выдает им достаточную производительность — то почему бы и нет?

3. Мудрость

3.1. Дизайн API

Бросить exception или вернуть код ошибки? Отдать пользователю коллекцию или итератор? Потоковая обработка или модель в памяти? Вопросов много, вариантов решения еще больше. Создание хорошего API — невероятно сложная работа.

3.2. Внешние зависимости в проекте

Мысль, которая может быть спасительной для одних проектов, и губительной для других.

3.3. Как помочь open source проекту?

Утверждение справедливо для любых проектов, не только open source. Все понимают, насколько важна хорошая документация. Но время на ее написание мы обычно находим с большим трудом.

3.4. О функциональном программировании

4. Юмор

4.1.Пожалуй, лучшее объяснение, что такое map-reduce

4.2. Микросервисы против монолитов

Hadi Hariri из JetBrains достаточно доходчиво разъясняет ключевые отличия этих двух архитектурных подходов:image

4.3. Если Вы собрались навести порядок в своем проекте ...

… то помните, что возможно кто-то уже делал это до Вас.
image
Источник: https://twitter.com/swardley [22]

Предыдущие выпуски

#3 (23.05.2016 — 05.06.2016) [23]
#2 (09.05.2016 — 22.05.2016) [24]
#1 (02.05.2016 — 08.05.2016) [25]

Автор: devozerov

Источник [26]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/java/138127

Ссылки в тексте:

[1] http://mail.openjdk.java.net/pipermail/jdk9-dev/2016-June/004443.html: http://mail.openjdk.java.net/pipermail/jdk9-dev/2016-June/004443.html

[2] Марк Рейнхольд: https://twitter.com/mreinhold

[3] Оракловский майлостоун: http://openjdk.java.net/projects/jdk8/milestones#definitions

[4] https://www.change.org/p/larry-ellison-tell-oracle-to-move-forward-java-ee-as-a-critical-part-of-the-global-it-industry: https://www.change.org/p/larry-ellison-tell-oracle-to-move-forward-java-ee-as-a-critical-part-of-the-global-it-industry

[5] Java EE Guardians: https://twitter.com/javaee_guardian

[6] http://www.cnbc.com/2016/06/13/microsoft-to-buy-linkedin.html: http://www.cnbc.com/2016/06/13/microsoft-to-buy-linkedin.html

[7] 13 июня 2016 г.: https://twitter.com/Krogsgard/status/742361759714009088

[8] https://wiki.openjdk.java.net/display/HotSpot/Presentations: https://wiki.openjdk.java.net/display/HotSpot/Presentations

[9] John Rose: https://twitter.com/johnrose00

[10] https://medium.com/@Coder_HarryLee/openjdk-check-by-pvs-studio-f25a2187b8a0#.obyfqnjbs: https://medium.com/@Coder_HarryLee/openjdk-check-by-pvs-studio-f25a2187b8a0#.obyfqnjbs

[11] PVS Studio: http://www.viva64.com/en/pvs-studio/

[12] http://www.yegor256.com/2016/06/17/dont-use-java-assertions.html: http://www.yegor256.com/2016/06/17/dont-use-java-assertions.html

[13] Егор Бугаенко: http://www.yegor256.com/

[14] нашем проекте их очень много: https://github.com/apache/ignite/search?utf8=%E2%9C%93&q=assert+path%3Amodules%2Fcore%2Fsrc%2Fmain&type=Code

[15] https://blog.buoyant.io/2016/06/17/small-memory-jvm-techniques-for-microservice-sidecars/: https://blog.buoyant.io/2016/06/17/small-memory-jvm-techniques-for-microservice-sidecars/

[16] buoyant.io: http://buoyant.io

[17] 8 июня 2016 г.: https://twitter.com/chvest/status/740402108600594434

[18] 13 июня 2016 г.: https://twitter.com/olivergierke/status/742391277304549376

[19] 14 июня 2016 г.: https://twitter.com/richorama/status/742784886684192769

[20] 10 июня 2016 г.: https://twitter.com/mariofusco/status/741220242492379136

[21] 10 июня 2016 г.: https://twitter.com/steveluscher/status/741089564329054208

[22] https://twitter.com/swardley: https://twitter.com/swardley

[23] #3 (23.05.2016 — 05.06.2016): https://habrahabr.ru/post/302734/

[24] #2 (09.05.2016 — 22.05.2016): https://habrahabr.ru/post/301402/

[25] #1 (02.05.2016 — 08.05.2016): https://habrahabr.ru/post/283138/

[26] Источник: https://habrahabr.ru/post/303604/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best