После шести месяцев разработки компания Oracle выпустила платформу Java SE 22 (Java Platform, Standard Edition 22), в качестве эталонной реализации которой используется открытый проект OpenJDK. За исключением удаления некоторых устаревших возможностей в Java SE 22 сохранена обратная совместимость с прошлыми выпусками платформы Java - большинство ранее написанных Java-проектов без изменений будут работоспособны при запуске под управлением новой версии. Готовые для установки сборки Java SE 22 (JDK, JRE и Server JRE) подготовлены для Linux (x86_64, AArch64), Windows (x86_64) и macOS (x86_64, AArch64). Разработанная в рамках проекта OpenJDK эталонная реализация Java 22 полностью открыта под лицензией GPLv2 с исключениями GNU ClassPath, разрешающими динамическое связывание с коммерческими продуктами...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=60812
А Micro Edition (Java ME) сдохло? Вроде на их сайт зашёл, страничка жива, никаких анонсов об устаревании. Но и новостей не слышно.
> А Micro Edition (Java ME) сдохло? Вроде на их сайт зашёл, страничка
> жива, никаких анонсов об устаревании. Но и новостей не слышно.Попробуй скачать без VPN эту радость
Религия не позволяет использовать VPN?
скачал, в чём проблема?
Оно полностью проприетарное, а опенсорсная реализация SquirrelJME бесполезна, так как хреново документирована и тулчейн отсутствует
> Оно полностью проприетарноеТак написал, будто это что-то плохое.
> сохранена обратная совместимость с прошлыми выпусками платформы JavaКак же это не прогрессивно! Гтк/Гномеры осуждают.
И разработчики Glibc тоже.
Гарантируется? Или так же, как с предыдущими версиями - повышение версии означает разработку заново.
>повышение версии означает разработку заново.это пассаж про жабу? сама жаба ломается очень мало по сравнению с остальными фреймворками. недавно решил обновить легасятину которая работала под jdk11 и wildfly 2019-го года (jsf, primefaces итд).
в целом, заняло час-два и переписывать пришлось ТОЛЬКО куски из jsf и primefaces.
ну и import-ы поменять с javax на jakarta (99% работы делает IDE)
Что-то незаметно, чтобы из GLibc выкидывали уже имеющиеся функции C.
Отличия между библиотекой C и ядром
В glibc до версии 2.3, обёрточная функция _exit() вызывала системный вызов ядра с тем же именем.
Начиная с glibc 2.3, обёрточная функция вызывает exit_group(2), чтобы завершить все нити
процесса.
String query = "SELECT * FROM Person p WHERE p."
+ property + " = '" + value + "'"; // былопохоже на трындеж, не может быть чтобы они не знали, что такое параметры
И в каком диалекте sql property у тебя может быть - параметром?И нет, не знают - это конкретные библиотеки должны знать.
Да и зачем нужен этот костыль в современных ЯП чтобы собрать строку из частей - тоже неочевидно. От sql injections вопреки распространенным фантазиям - не защищает. Валидируйте юзерский инпут, блжд, а не надейтесь на костыли.
ты вставляешь в sql валидированный инпут?
> ты вставляешь в sql валидированный инпут?если тебе никаким образом не надо вставлять в sql запрос данные (а то и как тут - параметры) пришедшие извне - зачем вообще выполнять этот запрос, да еще и программно?
Обычно таки да - мы храним там данные, имеющие какое-то отношение к тому кто по ту сторону от монитора, и делаем к ним обращения - опять же в интересах того кто по ту сторону монитора, а не для себя самих. Приходится как-то обмениваться с ним данными и параметрами запроса, вот удивительно-то.
> И в каком диалекте sql property у тебя может быть - параметром?
> И нет, не знают - это конкретные библиотеки должны знать.
> Да и зачем нужен этот костыль в современных ЯП чтобы собрать строку
> из частей - тоже неочевидно. От sql injections вопреки распространенным фантазиям
> - не защищает. Валидируйте юзерский инпут, блжд, а не надейтесь на
> костыли.зачем мне в проперти, если нужен для value, а там все норм с параметрами
потому что в приведенном примере - помимо value еще и имя поля - тоже переменная.Если ты будешь в одном месте подставлять эту переменную, а в другом отдельном - переменную для value - еще и двумя разными способами - код разумеется станет в десять раз понятнее и удобочитаемей. Нет.
Параметрические sql-конструкции - это просто костылик, причем пришедший из pl/sql
Если его тебе реализует (для него это может быть бесплатно) апи конкретной субд - пользуйся на здоровье, а зачем в синтаксис универсального языка-то такое тащить?
> Если его тебе реализует (для него это может быть бесплатно) апи конкретной субд - пользуйся на здоровье, а зачем в синтаксис универсального языка-то такое тащить?Пример иллюстрировал вообще-то интерполяцию строк, а не правильность построения SQL-запроса. Без SQL-специфичных слов интерполяция тоже работать будет. Чего ты на этом SQL зациклился, непонятно.
> Да и зачем нужен этот костыль в современных ЯП чтобы собрать строку из частей - тоже неочевидно
Если тебе неочевидно, для чего нужна интерполяция строк - тебе реально надо поднимать квалификацию.
> Пример иллюстрировал вообще-то интерполяцию строкя не знаю что такое "интерполяция строк", но второй вариант примера создает java.sql.Statement (и подозреваю еще и кинет exception при попытке запихать в качестве value '""\; truncate table;')
действительно, причем тут sql?
И я отвечал людям, удивленно спрашивавшим - зачем оно им надо когда в самом sql-коннекторе почти всех типичных баз - есть подстановка параметров при исполнении запроса (и туда такое подставить не получится, а если и да - то эту ошибку надо свалить на авторов коннектора).
> я не знаю что такое "интерполяция строк"Ну, это то, что ты называешь "сборкой строки из частей".
> второй вариант примера создает java.sql.StatementНет, всё-таки java.lang.String. Пример всё-таки про то, что в Java 22 ввели новый метод интерполяции строк. В дополнении к уже имеющимся, но менее удобным, как, например, String.format(). А не про SQL. Хоть там в строке и есть SQL-специфичные слова.
> Нет, всё-таки java.lang.String.да, похоже новость переписали на ходу. Тогда неинтересно.
И нет, переписали снова неправильно - так как у них сейчас (заскринил, чтобы не переписывали потихому: Statement query = """SELECT * FROM Person p
WHERE p.\{property} = '\{value}'"""; // стало
)
- я не знаю что тут написано. По ссылке должно было быть String guery = STR. далее по тексту. Что такое Statement и где он определен? В "было" именно String.
А та фигня вернет даже не java.lang.String, а какой-то неведомый java.lang.StringTemplate and String does not implement StringTemplate так что оно вообще не скомпилируется.(то что тут было изначально - можно, но этот обработчик SQL тебе предлагается написать как-нибудь самому, а из готового только STR и RAW, как я понял)
Параметры ладно, куда (some SQL).EscapeString() дели, или это теперь типа нормально?
Его, оказывается, надо теперь самому имплементить - тогда будет работать (прозрачно!) почти так как написано в изначальном а не дважды уже отредактированном тексте новости.Хошь эскейпинг пили, хошь што. А так как у них сейчас - вообще не будет работать.
Не густо. Вот как надо:
https://devblogs.microsoft.com/dotnet/performance-improvemen.../
> void main() { ... }Не прошло и 20 лет...
> Statement query = SQL."""SELECT * FROM Person p ... """
Омг, как это теперь развидеть?
>> Statement query = SQL."""SELECT * FROM Person p ... """
> Омг, как это теперь развидеть?не ссы, подними глаза к тексту новости и удивись. Развиделось?!
Вот то-то же! Кто владеет прошлым тот владеет будущим.Не запилили они метод SQL, померещилось.
> Добавлена седьмая предварительная реализация API VectorСедьмая Карл!
Сколько ещё можно?
Эта панама уже достала.
Странно, что тут не написано, но они зависят от реализации Project Valhalla, и пока он сам не выйдет из превью, Vector API тоже не выйдет:> Alignment with Project Valhalla — The long-term goal of the Vector API is to leverage Project Valhalla's enhancements to the Java object model. Primarily this will mean changing the Vector API's current value-based classes to be value classes so that programs can work with value objects, i.e., class instances that lack object identity. Accordingly, the Vector API will incubate over multiple releases until the necessary features of Project Valhalla become available as preview features. Once these Valhalla features are available we will adapt the Vector API and implementation to use them and then promote the Vector API itself to a preview feature. For further details, see the sections on run-time compilation and future work.
Короче говоря, ждать придётся **как минимум** столько же, сколько value-классы из Project Valhalla.
>Разработанная в рамках проекта OpenJDK эталонная реализация Java 22 полностью открыта под лицензией GPLv2Что же они тогда с гуглами судились за использование частей java api в андроид, когда андроид тоже открытый?! Красношапка тоже чудит с лицензией, с одной стороны gpl, а пользоваться обновлениями нельзя из-за патентов в коде, который тоже содержит gpl.
>>Разработанная в рамках проекта OpenJDK эталонная реализация Java 22 полностью открыта под
> Что же они тогда с гуглами судились за использование частей java apiкто "они"? Владелец Java SE - орацл. И у нее ни разу не GPL (и вообще с 8.какойтоминорщины версии - оооочень стремная лицензия).
Самый лучший язык для тех, кто любит ООП.
Это C++
…Худшее, что могло случиться с ООП. Язык, который успешно похерил саму концепцию.
Так по иронии, другого-то, чтоб и ОО, и в машкоды без всяких языковых ВМ, и достаточно используемого, не видно. D, вроде, есть, но почти не летает.
> Так по иронии, другого-то, чтоб и ОО, и в машкодыВ общем, ежики давились, но продолжали жрать кактус ООП :)
Понимаете ли, но ООП и машкоды - это 2 ортогональные сущности. ООП генерирует кучу ненужного машкода, нехило напрягая процесор, и тем способствует экологической катастрофе на Земле.
Я вам анекдот приведу старый, который вы по малолетству можете и не знать.
Страуструпа спрашивают:
- Можно ли на С++ писать системные вещи?
Страуструпа отвечает
- Можно - я тут намеднись на С++ написал DOS, она занимает всего 60 Мб.ПС. шутка юмора в том, что настоящая MS DOS умещалась на дискету в 640 Кб.
>> Так по иронии, другого-то, чтоб и ОО, и в машкоды
> В общем, ежики давились, но продолжали жрать кактус ООП :)
> Понимаете ли, но ООП и машкоды - это 2 ортогональные сущности. ООП
> генерирует кучу ненужного машкода, нехило напрягая процесор,эммм... ты конечно же можешь показать пример? Мы его прямо при тебе сунем в gcc и посмотрим на результат.
Вообще-то ООП генерить призван не ненужные машкоды, а очень даже нужные (и в случае cfront ныне покойного - даже не маш а вполне сишные коды) коды ЗА тебя. А так ты бы сам сидел и ляпал копипастой бойлерплейтный код, отличающийся от предыдущего тут типом параметра, а там вариацией его обработки, и так сто раз.
Если мы про "настоящий" ооп, c++ style, конечно. А кастрированный (без наследования) - вообще никакого "лишнего" кода генерить не может - что написано, то и генерит, в ровно одном экземпляре. Единственная ценность - защита от шаловливых ручек, не позволяющая все свести к fortran4 с COMMON блоком.
> Я вам анекдот приведу старый, который вы по малолетству можете и не
глупый.
А современный и умный - "я переписал на c++ msdos, попутно исправилась сама собой тонна ошибок, поскольку язык сильно уменьшил количество клацаний мной по клавиатуре, но есть один нюанс - она пока еще компилируется"
"Это верно. Это у вас получилась художественная правда", а не перепев глупостей.
> Я вам анекдот приведу старый, который вы по малолетству можете и не знать.
> MS DOS умещалась на дискету в 640 Кб.Если вы настолько старый, что такие анекдоты помните, надо бы ещё помнить, что последние версии DOS на дискетку ну никак не умещались, ни дистрибутив, ни тем более инсталлированная версия. А дискет в 640 КБ вообще не существовало в природе.
Ну и про С++ и машкод у вас примерно такого же уровня познания.
Ну, расскажи нам про машиногенерацию шаблонов С++ (template). Посмеемся вместе над избыточностью кода. Люблю фанатиков за их упертость - не знают, что творят, прости их, Господи.ПС. я абсолютно не против обращения на ты, и не надуваю от важности щек по поводу возраста. У меня есть внтренний оценщик, у которого С++ - мертворожденный был и останется. Даже Java лучше - но это на VM. А так - modern C, Rust и ADA(Spark) мои фавориты. Хотя, вместо С хотелось бы что-то более современное, но пока нет, Zig - не тянет. А С++ - полнейший тупик, причем изначально.
> Ну, расскажи нам про машиногенерацию шаблонов С++ (template).Рассказываю. Твой шаблон с подменой "мне" на "нам" обнуляет твой сарказм.
> Посмеемся вместе над избыточностью кода. Люблю фанатиков за их упертость
> - не знают, что творят, прости их, Господи.В отличие от тебя, я смотрел этот код достаточно долго и внимательно, когда обеспечивал поддержку std::exception в ядре (бабах!). Покажи мне код, над которым можно смеяться.
Пока мне вот от этого фрагмента glibc так смешно, что хочется заплакать:
; Intel syntax
syscall procarg_0 = qword ptr 8
mov rax, rdi
mov rdi, rsi
mov rsi, rdx
mov rdx, rcx
mov r10, r8
mov r8, r9
mov r9, [rsp+arg_0]
syscall ; LINUX -
cmp rax, 0FFFFFFFFFFFFF001h
jnb short loc_103832
retn
Поинтересуйся IDE для Borland C++ 3.x под DOS на чём написан был, анекдотчик ты наш.
> Поинтересуйся IDE для Borland C++ 3.x под DOS на чём написан был,
> анекдотчик ты наш.на паскале же ж. На плюсах (не современных ни разу а на "си с классами") была турбовижн-c++ которая входила в (расширенный!) комплект его поставки, но сама ide вроде бы на паскалевской версии, как и у борланд паскаля. Судя по некоторым особенностям, которых в сишной не было.
И да, в Wiring (C++ c гейшами) без проблем классы с виртаальными методами успешно помещаются в Ардуинку.
> И да, в Wiring (C++ c гейшами) без проблем классы с виртаальнымиси с классами, не?
> методами успешно помещаются в Ардуинку.блин, логично что пустое место успешно помещается в ардуинку.
> ООП генерирует кучу ненужного машкода, нехило напрягая процесоря ужасную вещь скажу - если для твоего тостера/калькулятора/etc - то, что сгенерировал компилятор (как это применимо к джаве кстати, имея что компилируемое там бегает на JVM), так вот, то, что сгенерировал компилятор - является проблемой - так не используй джаву.
она не для этого. выбрось эту идею из головы. она для PC/серверов/смартфонов(с натяжкой в виде DEX/Dalvik)
>>ПС. шутка юмора в том, что настоящая MS DOS умещалась на дискету в 640 Кб.если мы говорим о DS/DD, то они были 360/720 кБ для 5.25", и 720 кБ для 3.5".
MS-DOS 5.0 была 6 дисков по 360 кБ.
> Худшее, что могло случиться с ООПХудшее, что могло случиться с Опеннетом. Неосилятор рассуждает "со знанием дела", перепечатывая чужие мысли.
Вообще-то SmallTalk
Только всякие JVM, CLR (.NET) и проч. лучшесть таких языков сводят на нет.
a Android IDE 4.0 можно ли подключить к этой Java SE 22 ?
>> a Android IDE 4.0 можно ли подключить к этой Java SE 22 ?Можно. Подключайте.
у меня тогда программки не собираются - ругаются на ошибки в Java
это опенсорсие - исправляй!
Оно ещё живо? Java вообще используется в каких-нибудь новых проектах?
Унылый вброс какой-то 👎