- PVSM.RU - https://www.pvsm.ru -
— В битве Google vs Oracle поставлена жирная точка с запятой
— Вброс: checked exceptions не нужны, доказано!
— Учимся писать на ассемблере в Java-коде
… и многое другое
Как стало известно [1], федеральный суд Сан-Франциско отказал 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 г. [2]
И кстати про API. Социальные сети активно репостят занятное исследование [3]. Парни из University of Waterloo собрали статистику обработки checked exceptions в Java. Оказалось, что в большинстве случаев разработчики их либо игнорируют, либо логируют, либо заворачивают в unchecked. Вот так неожиданность!
Источник: plg.uwaterloo.ca/~migod/846/current/projects/09-NakshatriHegdeThandra-report.pdf [3]
На ситуацию, когда пользователи массово некорректно используют API, можно посмотреть с двух сторон. Можно сказать: «Пользователи не те!». А можно: «API не тот!». В данном случае я склонен поддержать второй вариант. Люди правильно отмечают [4] — сheck exceptions не справились со своей задачей. Их главное преимущество — определение на уровне сигнатуры метода — является их же главным недостатком. Мы не хотим, что бы какой-нибудь SQLException размазывался по всем компонентам приложения. Вместо этого мы изолируем его на уровне работы с данными. Чаще всего просто заворачивая в unchecked исключение. Отказ от checked исключений давно прослеживается по многим популярным фреймворкам. Возможно, пришло время посмотреть правде в глаза, и деприкейтнуть checked exceptions. Что думаете?
Heron [5]. Просто Heron. Не больше, и не меньше. Это фреймворк для stream processing. Позиционируется как замена Apache Storm. Любопытна история его создания — этот тот самый случай, когда парни сказали «А давайте перепишем все с нуля!», и переписали. Нам тоже периодически хочется выкинуть все, и создать заново. Но ввиду ограниченности ресурсов, эта идея практически всегда оказывается бесперспективной. Но у Twitter ресурсов много, поэтому им можно. Как говорится, «что позволено Юпитеру ...».
Ссылка: https://wiki.openjdk.java.net/display/Adoption/JDK+9+Outreach [6]
Это список главных новшеств в Java 9. Его полезно иметь ввиду, что бы понимать, какая часть вашего приложения сломается при переходе на новую версию.
Ссылка: https://advancedweb.hu/2016/05/27/jvm_jit_optimization_techniques/ [7]
Хорошее введение в работу JIT в Java. Инлайнинг, dead code elimination, «биоморфы», и т.д…
Ссылка: http://serce.me/posts/01-06-2016-wild-panama/ [8]
Все же уже слышали про Project Panama [9]? Автор статьи потрогал руками новую фичу — вставку ассемблера напрямую в Java-код. Теперь мы не боимся выпиливания sun.misc.Unsafe :-)
Ссылка: https://plumbr.eu/blog/programming/how-it-is-made-plumbr-edition [10]
Тестирование продукта под разные платформы и окружения — не самая легкая задача. В статье инженеры Plumbr рассказывают, как они выстраивали процесс тестирования своего продукта без выделенного QA отдела.
[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 г. [11]
9 devs' 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 requirements— Mario Fusco (@mariofusco) 1 июня 2016 г. [12]
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 [13]
— Jevgeni Kabanov (@ekabanov) 25 мая 2016 г. [14]
A periodic reminder that remembering the details of specific named algorithms is 0% correlated with being an actually good developer.
— Laurie Voss (@seldo) 25 мая 2016 г. [15]
Будьте осторожны с именами бинов в Спринге. В противном случае вы рискуете наткнуться на конфликт:
Spent some time figuring out why my Spring bean “foo” wasn’t resolving properly. Found Spring Data already has one! pic.twitter.com/gJTuhGaigb [16]
— Dan Woods (@danveloper) 23 мая 2016 г. [17]
Так же к использованию не рекомендовано имя «John Doe». Справедливости ради, «баг» уже исправлен [18].
Источник: classicprogrammerpaintings.com/post/144953638470/github-major-service-outage-georges-seurat [19]
Повод задуматься, насколько сильно мы зависим от интернет-сервисов.
Among the biggest lies in software:
"Windows is checking for a solution to the problem"
LOL pic.twitter.com/795QpZyp33 [20]— Lukas Eder (@lukaseder) 27 мая 2016 г. [21]
Кто-нибудь знает, что происходит в Windows в этот момент на самом деле?
Автор: devozerov
Источник [22]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/java/129029
Ссылки в тексте:
[1] известно: http://www.bloomberg.com/news/articles/2016-05-26/google-beats-oracle-copyright-suit-wiping-away-9-billion-claim
[2] 27 мая 2016 г.: https://twitter.com/cpurdy/status/736087000621555715
[3] исследование: http://plg.uwaterloo.ca/~migod/846/current/projects/09-NakshatriHegdeThandra-report.pdf
[4] отмечают: http://neverworkintheory.org/2016/04/26/java-exception-handling.html
[5] Heron: https://blog.twitter.com/2016/open-sourcing-twitter-heron
[6] https://wiki.openjdk.java.net/display/Adoption/JDK+9+Outreach: https://wiki.openjdk.java.net/display/Adoption/JDK+9+Outreach
[7] https://advancedweb.hu/2016/05/27/jvm_jit_optimization_techniques/: https://advancedweb.hu/2016/05/27/jvm_jit_optimization_techniques/
[8] http://serce.me/posts/01-06-2016-wild-panama/: http://serce.me/posts/01-06-2016-wild-panama/
[9] Project Panama: http://openjdk.java.net/projects/panama/
[10] https://plumbr.eu/blog/programming/how-it-is-made-plumbr-edition: https://plumbr.eu/blog/programming/how-it-is-made-plumbr-edition
[11] 27 мая 2016 г.: https://twitter.com/vickyharp/status/736228835046219779
[12] 1 июня 2016 г.: https://twitter.com/mariofusco/status/737885976203300865
[13] pic.twitter.com/1NP6EjFtU2: https://t.co/1NP6EjFtU2
[14] 25 мая 2016 г.: https://twitter.com/ekabanov/status/735597742316244992
[15] 25 мая 2016 г.: https://twitter.com/seldo/status/735526007604662272
[16] pic.twitter.com/gJTuhGaigb: https://t.co/gJTuhGaigb
[17] 23 мая 2016 г.: https://twitter.com/danveloper/status/734597081676042244
[18] исправлен: https://github.com/spring-projects/spring-data-jpa/pull/159
[19] classicprogrammerpaintings.com/post/144953638470/github-major-service-outage-georges-seurat: http://classicprogrammerpaintings.com/post/144953638470/github-major-service-outage-georges-seurat
[20] pic.twitter.com/795QpZyp33: https://t.co/795QpZyp33
[21] 27 мая 2016 г.: https://twitter.com/lukaseder/status/736152368451100672
[22] Источник: https://habrahabr.ru/post/302734/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.