Дайджест цікавих подій з світу Java, і навколо неї #3 (23.05.2016 — 05.06.2016)

image

У цьому випуску
— В битві Google vs Oracle поставлена жирна крапка з комою
— Вкидання: checked exceptions не потрібні, доведено!
— Вчимося писати на асемблері в Java-коді
… і багато іншого

1. Новини
1.1. Oracle vs GoogleЯк стало известно, федеральний суд Сан-Франциско відмовив Oracle у позові до Google про незаконному використанні API для Java. Досить знакова подія. Коротка фабула для тих, хто не стежив за цією історією:
Google: Ми написали свою віртуальну машину з якою можна працювати через Java API, який знайомий мільйонам розробників!
Oracle: Так не можна, ви нам повинні 9,000,000,000$.
Google: Немає, можна!
Oracle: Ні, не можна!
насправді ситуація двояка. З одного боку, написання API це важка і невдячна робота. Зробити продукт зручним для користувача вдається далеко не відразу. Найчастіше це тривалий і ітеративний процес. Тому вимога Oracle поважати цю працю цілком можна зрозуміти.

З іншого боку, перемога Oracle створила б небезпечний прецедент, коли можна накидати величезна кількість API, запатентувати їх, і почати тролити технологічні компанії. Своїм рішенням суд показав, що публічний API можна використовувати без будь-яких ліцензійних обмежень, що безумовно є плюсом для IT-індустрії в цілому.

Probably the best possible Gv.O outcome. Uncopyrightable APIs would de-fang copyleft licenses, and fair use helps a competitive marketplace.  cpurdy (@cpurdy) 27 травня 2016 р.

1.2. Checked exception? Ні, не чувІ до речі про API. Соціальні мережі активно репостят цікаве исследование. Хлопці з University of Waterloo зібрали статистику обробки checked exceptions в Java. Виявилося, що в більшості випадків розробники їх ігнорують, або логируют, або загортають у безконтрольно. Ось так несподіванка!
image
Джерело: plg.uwaterloo.ca/~migod/846/current/projects/09-NakshatriHegdeThandra-report.pdf

На ситуацію, коли користувачі масово некоректно використовують API, можна подивитися з двох сторін. Можна сказати: «Користувачі не ті!». А можна: «API не той!». В даному випадку я схильний підтримати другий варіант. Люди правильно зазначають — сһеск exceptions не впоралися зі своїм завданням. Їх головна перевага — визначення на рівні сигнатури методу є їх головним недоліком. Ми не хочемо, що б який-небудь SQLException розмазувався по всім компонентам програми. Замість цього ми ізолюємо його на рівні роботи з даними. Найчастіше просто загортаючи в безконтрольно виняток. Відмова від checked винятків давно простежується по багатьом популярним фреймворкам. Можливо, настав час подивитися правді в очі, і деприкейтнуть checked exceptions. Що думаєте?

1.3. Twitter відкрив черговий фреймворк з дивною назвоюHeron. Просто Heron. Не більше, і не менше. Це фреймворк для stream processing. Позиціонується як заміна Apache Storm. Цікава історія його створення — це той самий випадок, коли хлопці сказали «А давайте перепишемо все з нуля!», і переписали. Нам теж періодично хочеться викинути все, і створити заново. Але через обмеженість ресурсів, ця ідея практично завжди виявляється безперспективною. Але у Twitter ресурсів багато, тому їм можна. Як говориться, «що дозволено Юпітеру ...».

2. Почитати
2.1. Переходимо на Java 9Посилання: https://wiki.openjdk.java.net/display/Adoption/JDK+9+Outreach

Це список головних нововведень в Java 9. Його корисно мати на увазі, що б розуміти, яка частина вашого додатки зламається при переході на нову версію.

2.2. Простими словами про JITПосилання: https://advancedweb.hu/2016/05/27/jvm_jit_optimization_techniques/

Гарне введення в роботу JIT в Java. Инлайнинг, dead code elimination, «біоморфи», і т. д…

2.3. Пишемо асемблерні вставки в JavaПосилання: http://serce.me/posts/01-06-2016-wild-panama/

Все ж уже чули про Project Panama? Автор статті помацав руками нову фічу — вставку асемблера безпосередньо в Java-код. Тепер ми не боїмося випилювання sun.misc.Unsafe :-)

2.4. QA процес в PlumbrПосилання: https://plumbr.eu/blog/programming/how-it-is-made-plumbr-edition

Тестування продукту під різні платформи і оточення — не найлегша завдання. У статті інженери Plumbr розповідають, як вони вибудовували процес тестування свого продукту без виділеного QA відділу.

3. Мудрість
3.1. Про Junior-ів і Senior-ів
[User requests feature already in product]
Junior dev: "lol dumb user"
Staff dev: "Closed — fixed"
Senior dev: <opens usability bug>  Vicky Harp (@vickyharp) 27 травня 2016 р.

3.2. Про самовпевненість
9 розробники' lies

1 Tested
2 Fixed
3 Not a bug
4 Thread-safe
5 Done in 2 days
6 user's fault
7 It scales
8 Self-documenting
9 I got вимога  Mario Fusco (@mariofusco) 1 червня 2016 р.

3.3. Падаючого підштовхни
we've taken strong steps to prevent further break-ins. Our buildings now have doors and an option to use locks. pic.twitter.com/1NP6EjFtU2  Jevgeni Kabanov (@ekabanov) 25 травня 2016 р.

3.4. Двояка думка про алгоритми
A periodic reminder that remembering the details of specific named algorithms is 0% correlated being with an actually good developer.  Laurie Voss (@seldo) 25 травня 2016 р.

4. Гумор
4.1. Foo в СпрингеБудьте обережні з іменами бинов в Спринге. В іншому випадку ви ризикуєте натрапити на конфлікт:
some time Spent figuring out why my Spring bean «foo» wasn't resolving properly. Found Spring Data already has one! pic.twitter.com/gJTuhGaigb  Dan Woods (@danveloper) 23 травня 2016 р.
Так само до використання не рекомендовано ім'я «John Doe». Справедливості заради, «баг» вже виправлено.

4.2. Коли ламається GitHubimage
Джерело: classicprogrammerpaintings.com/post/144953638470/github-major-service-outage-georges-seurat

Привід задуматися, наскільки сильно ми залежимо від інтернет-сервісів.

4.3. Нахабна брехня Microsoft
Among the biggest lies in software:
"Windows is checking for a solution to the problem"
LOL pic.twitter.com/795QpZyp33  Lukas Eder (@lukaseder) 27 травня 2016 р.

Хто-небудь знає, що відбувається в Windows в цей момент насправді?
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.