anton0xf
Java dev math fp tl:dr: Монада — это враппер с возможностью оперировать над завёрнутым значением. Если вы пишете на Java то уже наверняка знаете, что это. Никакой магии или скрытых смыслов.

Со мной щас случилось неожиданное. Т.к. я на Хаскелях и Скалах так никогда и не писал ничего длиннее пятка строк, то меня, как и большинство остальных людей несколько смущало понятие "монада". Хотя и знал уже, что по сути это всего лишь умное название для некоего враппера. Но всегда оставалось ощущение, что там есть какой-то более сложный нюанс, т.к. про всякие джавовые 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)`
vt
Java сделаноунас Я тут внезапно установил отечественное ПО: libericajdk.ru
Все сборки Liberica JDK прошли тесты TCK на реализацию спецификаций Java SE и соответствуют требованиям цифрового суверенитета.Ржака в том, что у них единственных есть готовая сборочка для Mac(ARM64), у остальных или нету, или не взлетело с первой попытки установить, а у этих работает, лол
lex2d
Java боян Нейроночка пишет регрессионные юнит тесты. Пока не пробовал, но может руки дойдут фриварную версию скачать, хотя джавы в проекте становится все меньше.

diffblue.com
don-Rumata
работа Java soft IT Не помню как, но я нашёл BellSoft, которые пилят свою сборку Явы. В отличии от мамкиных джавистов — Оракл их сертифицировал. Кайф в том, что:
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".
ndtimofeev
Linux Java химия Поставил MarvinSketch (это такое собственническое ПО для рисования молекул на Яве) и запустил его в oracle jvm (один хрен он был нужен чтобы в клиент-банк от Авангарда). Обнаружил что эта штука 1) тормозит 2) тормозит всеми восемью ядрами сразу. Удивился, поскольку раньше такого за marvin'ом замечено не было. Поставил icedtea — всё заработало. Мистика.
lex2d
Java боян dev Android решето В общем, jcenter показал, что там про секурити думали не очень и ныне рекомендуется в гредле прописывать jcenter() последним и юзать mavenCentral(). Основная неудобство, что jcenter() идет по умолчанию в в шаблоне новосозданного андроид проекта.
blog.autsoft.hu
SannySanoff
Java жизнь programming У меня IDEA с двумя проектами (один там даже с петоном) стартует 1м30сек пока цпу не утихнет, и это я к ней не прикасаюсь покуда не утихнет. Когда начинаю прикасаться, понятно, снова бурлит покуда не утихнет, потом уже потихоньку.

Время ли обновлять ноут? А сколько грузяццо ваши проекты?

(основной проект у меня нонче в Jupyter на удаленном компе, и мне вообще идея почти по сараю).
AlexVK
Java bug Жаба мне снесла root корневой раздел. Точнее попыталась. Т.к. прав нет никаких то удалила /home
Со всем. Конфиги, настройки, ключи — всё улетело нахрен. Какие то доки, проекты, сорцы....
Жалко только ключи и настройки. Документация вся в иторнетах, почта там же. проекты — там же. Книги — их тьма в телеге и на трекерах... А вот ключи и настройки, вот этого вот нет, так что всё настраивтаь таки заново.

Особый привет глючным либам в недрах которых могут быть shutDownHook с удалением рабочего каталога!!
ma1uta
ЖЖ Java фиас попытался сделать небольшую библиотеку, чтобы можно было бы импортировать ФИАС (fias.nalog.ru). В итоге всё работает (просмотр и импорт), но упирается в субд, что ожидаемо, всё это надо куда-нибудь скидывать в какой-нибудь hadoop и уже оттуда с ним работать.
OCTAGRAM
Java SWING ada JGNAT CheerpJ Допилил CheerpJ и JGNAT друг под друга

Посмотреть можно здесь

Пока что вижу: насчёт многозадачности — правда. Я думал, это фишка простого Cheerp, а раз в простом Cheerp нету асинхронизатора, то это всё может работать только на SharedArrayBuffer и не везде. Но нет. Планировщик находится в loader.js от CheerpJ и, насколько я могу судить, работает. В том числе можно динамически подгружать классы, и они грузятся (с поддержкой AOT) по сети, и исполнение зелёного потока продолжается с момента остановки. EmScripten так не умеет, там только синхронным XHR можно с файловой системой работать, и только в Web Workers, в общем, без асинхронизатора это ни о чём.

Вместе со Swing там, похоже, даже движок текста свой подгружается. Антиалиасинг явно получше, чем в браузере. Но время запуска будь здоров. Хотя большая часть сейчас зависит от производителя. Если они там у себя что-нибудь подкрутят, васм внедрят, например, ведь Cheerp умеет, то есть, куда ужаться. Просто начинать с тем, что есть, а оно само будет улучшаться.
OCTAGRAM
Java А в javax.xml.datatype.XMLGregorianCalendar есть и getTimezone, и getTimeZone. Это не где-то в частной поделке такой бардак, это основной программный интерфейс.

Нет, нельзя давать программистам регистрозависимость. Если неприятность может случиться, она случится.
OCTAGRAM
Java com совместимость 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, и тоже там совместимую версию надо постараться подобрать, собственно, почему эту фичу кроме особенно заинтересованных никто не смог увидеть в действии.

Предполагаю, что так пагубно влияет общая версия формата для интерфейса и реализации. Собственно, и нет разделения на интерфейс и реализацию. Новые фичи не могут просто сидеть и не высовываться в новых секциях и новых опкодах, на которые не любой инструментарий будет смотреть, им обязательно надо вылезать на самый верх, в общий номер формата, и там всё ломать.
RA
Java dev pre_junior Тут чел очень хочет на java програмить. Но он в алгоритмы ещё не очень умеет.
Что бы ему насоветовать? Так чтобы от основ: поиск, сортировка пузырьком, ...
Но так чтобы было понятно — берём эту ide, сюда пишем, так запускаем.

Я как-то бегло нагуглил какие-то книжонки по java. Ни одна мне не понравилась.
Думал ему линк на Кнута дать, чтоб по алгоритмам подтянуть, но там такая скука.

В общем рекоменд, если есть чо.
OCTAGRAM
web Java JavaScript CheerpJ как я заметил, уже вышел из закрытых альфа-тестов и находится в бете.

Те же разработчики, что делают Cheerp, транслятор C++ в JavaScript/Asm.js/WASM, делают CheerpJ для Java. Позиционируется он как нормально портированная Java. Никаких ограничений, как в GWT. Поддерживается байт-код. Поддерживаются Swing и Java-апплеты как с оффлайн конвертацией, так и в виде шима. Есть плагин для Хрома.
OCTAGRAM
Java API gnustep objectiveC YellowBox Думал, в Swift будут утилиты на Swift, а оказалось, что нет (см. #2891656). Ладно, посмотрим, какие есть ещё варианты. У нас же мостов для Java есть целых три штуки. А как там парсинг сделан?

Первым в голову приходит Rococoa. И там парсинг не сделан никак. Согласно документации, надо писать привязки вручную.

Про Apple Cocoa-Java известно мало, потому что он с закрытым кодом, но оттуда можно взять ручные коррекции, написанные прямо в Apple. Похоже, полновесного парсера типа GCC там нет. clang в те времена не было.

Порадовал GNUStep JIGS. Там есть и парсер, и ручные коррекции.
ugnich
Java tomcat j2ee Есть здесь гуру Tomcat? Deploy занимает секунд 20, в это время хотелось бы отдавать страницу "подождите, обновляем" с кодом 503. В настоящее время отдается 404 и не могу найти где это исправить. Сервлет ROOT, mapping в корень.
RA
Ubuntu Java ? help Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000007b3b80000, 64487424, 0) failed; error='Невозможно выделить память' (errno=12)
Ubuntu 16.04
Java 1.8. На 1.7 та же фигня
Памяти 16гиг. Свопа нет.

Реально памяти не хватает?