Кто на жебе пишет? Экспертное мнение в студию
publib.boulder.ibm.com
publib.boulder.ibm.com
Интересная книжка, но аж 857 страниц, целиком ниасилю, интересные штуки подчерпнул длдя себя.
Актуальна, обновлена 2022-07-26
Корпорации — малаццы, не зря инженеграм $$$$ платят
Authors
Kevin Grigorenko (kevin.grigorenko@us.ibm.com) [Primary Contact]
Alexandre Polozoff (polozoff@us.ibm.com) [Secondary Contact]
Andrea Pichler
Andy Henderson
Anuradha Ramamoorthy
Ashish Deb
Ed Bernal
Eric M Covener
Gary Hunt
Gary J DeVal
Hermann Huebler
Jagdish Komakula
Keith B Smith
Marco Fabbri
Martin Ross
Phil Hirsch
Raquel Maldonado
Surya V Duggirala
Vishal A Charegaonkar
Younes Manton
Contributors
Andrew Levandoski
Benedict Fernandes
Chris Bailey
Pavel Malyutin
Rengan Sundararaman
Stephen A Hellberg
Tom Alcott
Walt Adams
Thank you to the IBM managers that helped support this project: Prasad Imandi, Dave Schell, Barry Foster,
Melissa Modjeski, Keri Olson, Frank Schembari, Michael Stuy, Mike Morin, Sree Ratnasinghe, and others.
publib.boulder.ibm.com
Интересная книжка, но аж 857 страниц, целиком ниасилю, интересные штуки подчерпнул длдя себя.
Актуальна, обновлена 2022-07-26
Корпорации — малаццы, не зря инженеграм $$$$ платят
IBM WebSphere Application Server Performance CookbookТРАФИК! publib.boulder.ibm.com
IBM WebSphere Application Server
Performance Cookbook
The IBM® WebSphere® Application Server Performance Cookbook covers performance tuning for WebSphere Application Server (WAS). In addition, it includes deep dives into Java™, Operating Systems, theory, and other topics that may be applied to other products and environments. The cookbook is designed to be read in a few different ways:
On the go: Readers short on time should skip to the Recipes chapter.
Detailed chapters and sub-chapters such as WAS, Java, etc.
The cookbook may be viewed as a single HTML page (~20 MB),
a PDF file (~10 MB), or browse the cookbook by section using the Table of Contents below.
Authors
Kevin Grigorenko (kevin.grigorenko@us.ibm.com) [Primary Contact]
Alexandre Polozoff (polozoff@us.ibm.com) [Secondary Contact]
Andrea Pichler
Andy Henderson
Anuradha Ramamoorthy
Ashish Deb
Ed Bernal
Eric M Covener
Gary Hunt
Gary J DeVal
Hermann Huebler
Jagdish Komakula
Keith B Smith
Marco Fabbri
Martin Ross
Phil Hirsch
Raquel Maldonado
Surya V Duggirala
Vishal A Charegaonkar
Younes Manton
Contributors
Andrew Levandoski
Benedict Fernandes
Chris Bailey
Pavel Malyutin
Rengan Sundararaman
Stephen A Hellberg
Tom Alcott
Walt Adams
Thank you to the IBM managers that helped support this project: Prasad Imandi, Dave Schell, Barry Foster,
Melissa Modjeski, Keri Olson, Frank Schembari, Michael Stuy, Mike Morin, Sree Ratnasinghe, and others.
Copyright International Business Machines Corporation 2022. All rights reserved. > U.S. Government Users Restricted Rights: Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corporation.
For comments or questions, contact Kevin Grigorenko.
Со мной щас случилось неожиданное. Т.к. я на Хаскелях и Скалах так никогда и не писал ничего длиннее пятка строк, то меня, как и большинство остальных людей несколько смущало понятие "монада". Хотя и знал уже, что по сути это всего лишь умное название для некоего враппера. Но всегда оставалось ощущение, что там есть какой-то более сложный нюанс, т.к. про всякие джавовые Optional и пр. обычно говорят "это близко, но не совсем оно", и добавляют с придыханием, что там есть ещё "монадические законы" и начинают разговор про Теорию Категорий, с которой у меня тоже как-то всё не складывается.
А тут на конфе в который раз зашла об этом речь, и я решил прикола для заглянуть в вику. Долистал до определения и всё понял!
java.util.Optional — это натурально монада. Как стримы и любой другой враппер, если к нему прицепить метод flatMap() с поведением, как у соответствующих методов Optional или Stream.
Раскрою на примере того самого Optional. Как пишут в вики монада `M` над типом `T` (пишут `M T`) — это тройка, состоящая из
1. конструктора типа (`M T`), т.е. например `Optional<T>`
2. конвертера `unit: T -> M T`. Напомню, что в стандартной математической нотации `f: X -> Y` — это функция из `X` в `Y`. Для моего примера это будет создание Optional из значения, т.е. в той же нотации: `Optional::<T>of : T -> Optional<T>`
3. и комбинатора `(>>=): (M T, T → M U) → M U`, т.е. функа, который употребляет монаду и другой функ, который из значения, в неё завернутого, делает другое значение, завёрнутое в эту же монаду, и применяет второе к содержимому первой. Т.е. в точности то, что делает Optional::flatMap, если понимать объект, у которого этот метод вызывается, как неявный первый аргумент. Точнее если у нас есть `x : Optional<T>` (переменная `x` типа `Optional<T>`), то `x::<U>flatMap : (T -> Optional<U>) -> Optional<U>` (или как пишут в javadoc: `Optional<U> flatMap(Function<? super T,? extends Optional<? extends U>> mapper)`), что отличается от сигнатуры в определении только тем, что `x` — это неявный параметр, поэтому его тип e у меня написан отдельно, но это исключительно синтаксическая особенность — в том же Python этот аргумент пишется в сигнатуре методов явно.
Ну а "законы" — это абсолютно тривиальные ожидаемые от врапера свойства:
+ `unit(x) >>= f <-> f(x)` — означает что flatMap() применяет свой аргумент с завёрнутому значению, а не делает что-то более хитрое: `Optional.of(x).flatMap(f) == f(x)`
+ `ma >>= unit <-> ma` — если есть переменная `x : Optional<T>`, то примерение `flatMap()` к `Optional::of` ничего не поменяет: `x.flatMap(Optional::of) == x`
+ `ma >>= λx → (f(x) >>= g) <-> (ma >>= f) >>= g` — некое правило ассоциативности применения `flatMap()`, т.е. если `x : Optional<T>`, и `f: T -> Optional<U>`, а `g: U -> Optional<V>`, то `x.flatMap(x -> f(x).flatMap(g)) == x.flatMap(f).flatMap(g)`
libericajdk.ru
Я тут внезапно установил отечественное ПО: Все сборки Liberica JDK прошли тесты TCK на реализацию спецификаций Java SE и соответствуют требованиям цифрового суверенитета.Ржака в том, что у них единственных есть готовая сборочка для Mac(ARM64), у остальных или нету, или не взлетело с первой попытки установить, а у этих работает, лол
1. Бинарные сборки на Гитхабе.
2. ЕСТЬ РЕСТ АПИ!!! bell-sw.com Не надо парсить html Амазона, чтобы вытащить последнюю версию Corretto. Curl'у не надо подсовывать куки, чтобы дёрнуть jdk с oracle.com.
3. Чуваки из СПб, а значит ответят по-русски (с ингришем у меня всё ещё плохо).
4. Репы для deb и rpm: bell-sw.com Http тоже не отрубили, т.е. apt-cacher-ng будет чувствовать себя норм.
5. В jdk-full воткнут и jre и jdk и javafx! 1 msi для всего!
6. А ещё у них в api есть "latestLTS".
A key limitation of the JDBC driver is that it cannot receive asynchronous notifications and must poll the backend to check if any notifications were issued.
cr.openjdk.java.net они и до java добрались
habr.com
напоминает RHEL и CentOS, в том плане что CentOS это RHEL для бедных.
Полный список различий между Open JDK и Oracle JDKначиная с 11й версии
blogs.oracle.com
напоминает RHEL и CentOS, в том плане что CentOS это RHEL для бедных.
Полный список различий между Open JDK и Oracle JDKначиная с 11й версии
blogs.oracle.com
Время ли обновлять ноут? А сколько грузяццо ваши проекты?
(основной проект у меня нонче в Jupyter на удаленном компе, и мне вообще идея почти по сараю).
java -XX:+UseShenandoahGC -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-b15)
OpenJDK 64-Bit Server VM (build 25.181-b15, mixed mode)
Л — Легковесность.
(Жаба всех вас переживет) (Пишу на Дарте)
Это шо ж творится? Они долбанулись.
Со всем. Конфиги, настройки, ключи — всё улетело нахрен. Какие то доки, проекты, сорцы....
Жалко только ключи и настройки. Документация вся в иторнетах, почта там же. проекты — там же. Книги — их тьма в телеге и на трекерах... А вот ключи и настройки, вот этого вот нет, так что всё настраивтаь таки заново.
Особый привет глючным либам в недрах которых могут быть shutDownHook с удалением рабочего каталога!!
oracle.com на login.oracle.com где нужно сделать Sign in или create account.
Уебаны не дают скачать JRE 7 перенаправля с
medium.com — в java 10 появятся local variable type, можно будет писать var i = "Hello";
Допилил CheerpJ и JGNAT друг под друга
Посмотреть можно здесь
Пока что вижу: насчёт многозадачности — правда. Я думал, это фишка простого Cheerp, а раз в простом Cheerp нету асинхронизатора, то это всё может работать только на SharedArrayBuffer и не везде. Но нет. Планировщик находится в loader.js от CheerpJ и, насколько я могу судить, работает. В том числе можно динамически подгружать классы, и они грузятся (с поддержкой AOT) по сети, и исполнение зелёного потока продолжается с момента остановки. EmScripten так не умеет, там только синхронным XHR можно с файловой системой работать, и только в Web Workers, в общем, без асинхронизатора это ни о чём.
Вместе со Swing там, похоже, даже движок текста свой подгружается. Антиалиасинг явно получше, чем в браузере. Но время запуска будь здоров. Хотя большая часть сейчас зависит от производителя. Если они там у себя что-нибудь подкрутят, васм внедрят, например, ведь Cheerp умеет, то есть, куда ужаться. Просто начинать с тем, что есть, а оно само будет улучшаться.
Посмотреть можно здесь
Пока что вижу: насчёт многозадачности — правда. Я думал, это фишка простого Cheerp, а раз в простом Cheerp нету асинхронизатора, то это всё может работать только на SharedArrayBuffer и не везде. Но нет. Планировщик находится в loader.js от CheerpJ и, насколько я могу судить, работает. В том числе можно динамически подгружать классы, и они грузятся (с поддержкой AOT) по сети, и исполнение зелёного потока продолжается с момента остановки. EmScripten так не умеет, там только синхронным XHR можно с файловой системой работать, и только в Web Workers, в общем, без асинхронизатора это ни о чём.
Вместе со Swing там, похоже, даже движок текста свой подгружается. Антиалиасинг явно получше, чем в браузере. Но время запуска будь здоров. Хотя большая часть сейчас зависит от производителя. Если они там у себя что-нибудь подкрутят, васм внедрят, например, ведь Cheerp умеет, то есть, куда ужаться. Просто начинать с тем, что есть, а оно само будет улучшаться.
Нет, нельзя давать программистам регистрозависимость. Если неприятность может случиться, она случится.
Bad class file: version 52.0 not supported
Да что ж вам неймётся-то по версиям скакать. Ну что не сидится на одной. Вот чем хорош COM и чем плоха Java, в COM совместимость десятилетиями держится, а тут каких-то несчастных четыре года отделяет, и уже инструментарий начинает отваливаться. В книге «Putting Metaclasses to Work» симуляция была специально реализована на Java, чтобы, как пишет автор, как можно надольше сохранить. В итоге компилятор DirectToSOM C++, библиотека SOM и прочее PE/COFF'ное запускается на современной Windows 10, а симуляция PMtW на современной JVM — нет. И на не очень современной 1.5 — тоже. Вообще надо какую-то древнюю находить, чтоб подошло тютелька в тютельку. Знал бы автор, как жестоко будут насмехаться над его потугами производители. Начиналось за здравие, столько надежд было.
И в Delphi CORBA IDL парсится утилитой не на Delphi, транслируемой в, как показывает практика, долгоживущий PE/COFF, а на Java, и тоже там совместимую версию надо постараться подобрать, собственно, почему эту фичу кроме особенно заинтересованных никто не смог увидеть в действии.
Предполагаю, что так пагубно влияет общая версия формата для интерфейса и реализации. Собственно, и нет разделения на интерфейс и реализацию. Новые фичи не могут просто сидеть и не высовываться в новых секциях и новых опкодах, на которые не любой инструментарий будет смотреть, им обязательно надо вылезать на самый верх, в общий номер формата, и там всё ломать.
Что бы ему насоветовать? Так чтобы от основ: поиск, сортировка пузырьком, ...
Но так чтобы было понятно — берём эту ide, сюда пишем, так запускаем.
Я как-то бегло нагуглил какие-то книжонки по java. Ни одна мне не понравилась.
Думал ему линк на Кнута дать, чтоб по алгоритмам подтянуть, но там такая скука.
В общем рекоменд, если есть чо.
javacodegeeks.com — хотят человеческий switch
CheerpJ как я заметил, уже вышел из закрытых альфа-тестов и находится в бете.
Те же разработчики, что делают Cheerp, транслятор C++ в JavaScript/Asm.js/WASM, делают CheerpJ для Java. Позиционируется он как нормально портированная Java. Никаких ограничений, как в GWT. Поддерживается байт-код. Поддерживаются Swing и Java-апплеты как с оффлайн конвертацией, так и в виде шима. Есть плагин для Хрома.
Те же разработчики, что делают Cheerp, транслятор C++ в JavaScript/Asm.js/WASM, делают CheerpJ для Java. Позиционируется он как нормально портированная Java. Никаких ограничений, как в GWT. Поддерживается байт-код. Поддерживаются Swing и Java-апплеты как с оффлайн конвертацией, так и в виде шима. Есть плагин для Хрома.