The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск платформы Java SE 22 и открытой эталонной реализации OpenJDK 22

19.03.2024 21:59

После шести месяцев разработки компания 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, разрешающими динамическое связывание с коммерческими продуктами.

Java SE 22 отнесён к категории выпусков с обычным сроком поддержки, обновления для которого будут выпускаться до следующего релиза. В качестве ветки с длительным сроком поддержки (LTS) следует использовать Java SE 21 или Java SE 17, обновления для которых будут выпускаться до 2031 и 2029 годов соответственно (общедоступные - до 2028 и 2026 годов). Общедоступная поддержка LTS-ветки Java SE 11 прекращена в сентябре прошлого года, но расширенная поддержка будет осуществляться до 2032 года. Расширенная поддержка LTS-ветки Java SE 8 продлится до 2030 года.

Напомним, что начиная с выпуска Java 10 проект перешёл на новый процесс разработки, подразумевающий более короткий цикл формирования новых релизов. Новая функциональность теперь развивается в одной постоянно обновляемой master-ветке, в которую включаются уже готовые изменения и от которой раз в шесть месяцев ответвляются ветки для стабилизации новых выпусков.

Из новшеств Java 22 можно отметить:

  • В сборщике мусора G1 реализована поддержка закрепления областей (region pinning), позволяющая временно зафиксировать местоположение Java-объектов в памяти, чтобы избежать их перемещения сборщиком мусора и обеспечить безопасную передачу ссылок на эти объекты между Java и нативным кодом. Закрепление позволяет снизить задержки и обойтись без отключения сборки мусора при выполнении критических секций (critical regions) JNI (Java Native Interface) с нативным кодом (во время выполнения данных секций JVM не должен перемещать связанные с ними критические объекты для того чтобы избежать состояний гонки). Закрепление выводит критические объекты из поля зрения сборщика мусора, который может продолжать выполнять чистку незакреплённых областей.
  • Добавлена предварительная возможность, разрешающая указание в конструкторах выражений перед вызовом super(...), используемого для явного вызова конструктора родительского класса из конструктора наследуемого класса, если эти выражения не ссылаются на создаваемый конструктором экземпляр.
    
       class Outer {
           void hello() {
               System.out.println("Hello");
           }
           class Inner {
               Inner() {
                   hello();
                   super();
               }
           }
       }
    
  • Стабилизирован API FFM (Foreign Function & Memory), позволяющий организовать взаимодействие Java-программ с внешними кодом и данными через вызов функций из внешних библиотек и доступ к памяти вне JVM, не прибегая к использованию JNI (Java Native Interface).
  • Включена поддержка безымянных переменных и сопоставлений с шаблоном - вместо неиспользуемых, но необходимых при вызове переменных и шаблонов, теперь можно указывать символ "_".
    
       // было
       String pageName = switch (page) {
         case GitHubIssuePage(var url, var content, var links, int issueNumber)
               -> "ISSUE #" + issueNumber;
       ...
       };
    
    
       // теперь можно
       String pageName = switch (page) {
          case GitHubIssuePage(_, _, _, int issueNumber)
            -> "ISSUE #" + issueNumber;
       };
    
  • Предложена предварительная реализация API Class-File для разбора, генерации и преобразования файлов с классами Java.
    
       ClassFile cf = ClassFile.of();
       ClassModel classModel = cf.parse(bytes);
       byte[] newBytes = cf.build(classModel.thisClass().asSymbol(),
            classBuilder -> {
                for (ClassElement ce : classModel) {
                    if (!(ce instanceof MethodModel mm
                            && mm.methodName().stringValue().startsWith("debug"))) {
                        classBuilder.with(ce);
                    }
                }
            });
    
  • В утилите java реализована возможность запуска Java-программ, поставляемых в форме нескольких файлов с кодом или предкомпилированных библиотек классов, без раздельной компиляции этих файлов и без конфигурирования сборочной системы. Новая возможность упрощает запуск программ, в которых код разных классов выделен в отдельные файлы.
    
       Prog.java:
    
          class Prog {
              public static void main(String[] args) { Helper.run(); }
          }
    
       Helper.java:
    
          class Helper {
              static void run() { System.out.println("Hello!"); }
          }
    

    Например, для запуска программы, состоящей из двух файлов "Prog.java" и "Helper.java" теперь достаточно запустить "java Prog.java", что приведёт к компиляции класса Prog, определения ссылки на класс Helper, поиска и компиляции файла Helper.java и вызова метода main.

  • Добавлена вторая предварительная реализация строковых шаблонов (String Template), реализованных в дополнение к строковым литералам и блокам текста. Строковые шаблоны позволяют совмещать текст с вычисляемыми выражениями и переменными без использования оператора "+". Подстановка выражений осуществляется при помощи подстановок \{..}, при этом для проверки корректности подставляемых значений могут подключаться специальные обработчики. Например, можно создать обработчик SQL, который обеспечит проверку значений, подставляемых в SQL-код, и вернёт на выходе объект java.sql.Statement, или обработчик JSON для отслеживания корректности подстановок JSON и возврата JsonNode.
    
       String query = "SELECT * FROM Person p WHERE p."
           + property + " = '" + value + "'"; // было
    
       Statement query = SQL."""SELECT * FROM Person p
           WHERE p.\{property} = '\{value}'"""; // стало
    
  • Добавлена седьмая предварительная реализация API Vector, предоставляющего функции для векторных вычислений, которые выполняются с использованием векторных инструкций процессоров x86_64 и AArch64 и позволяют одновременно применить операции сразу к нескольким значениям (SIMD). В отличие от предоставляемых в JIT-компиляторе HotSpot возможностей по автовекторизации скалярных операций, новый API даёт возможность явно управлять векторизацией для параллельной обработки данных.
  • Добавлена предварительная реализация расширенного API Stream, поддерживающего определение собственных промежуточных операций, которые могут оказаться полезны в случаях, когда существующих встроенных промежуточных операций недостаточно для желаемого преобразования данных. Собственные обработчики подключаются при помощи новой промежуточной операции Stream::gather(Gatherer), которая обрабатывает элементы потока, применяя к ним заданный пользователем обработчик.
    
       jshell> Stream.of(1,2,3,4,5,6,7,8,9).gather(new WindowFixed(3)).toList()
       $1 ==> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    
  • Предложен для тестирования второй вариант экспериментального API для cтруктурированного параллелизма (Structured Concurrency), упрощающего разработку многопоточных приложений за счёт обработки нескольких задач, выполняемых в разных потоках, как единого блока.
  • Добавлена вторая предварительная реализация неявно объявленных классов и безымянных экземпляров метода "main", в которых можно обойтись без объявлений public/static, передачи массива аргументов и прочих сущностей, связанных с объявлением класса.
    
       // было
       public class HelloWorld {
         public static void main(String[] args) {
           System.out.println("Hello world!");
         }
       }
    
       // теперь можно
       void main() {
           System.out.println("Hello, World!");
       }
    
  • Добавлена вторая предварительная реализация ограниченных значений (Scoped Values), позволяющих совместно использовать неизменяемые данные в потоках и эффективно обмениваться данными между дочерними потоками (значения наследуются). Scoped Values развиваются для замены механизма переменных локальных к потоку (thread-local variables) и более эффективны при использовании очень большого числа виртуальных потоков (тысячи и миллионы потоков). Главное отличие Scoped Values от переменных локальных к потоку в том, что первые записываются один раз, в дальнейшем не могут быть изменены и остаются доступны только на время выполнения потока.
  • В сборщике мусора Parallel повышена производительность работы с большими массивами объектов. Оптимизация позволила в некоторых тестах с большими массивами объектов на 20% снизить задержку перед началом поиска объекта.

Дополнительно можно отметить публикацию обновления платформы для создания приложений с графическим интерфейсом JavaFX 22.

  1. Главная ссылка к новости (https://mail.openjdk.org/piper...)
  2. OpenNews: Выпуск Java SE 21
  3. OpenNews: Выпуск Java SE 20
  4. OpenNews: Доступен Jakarta EE 10, продолжающий развитие Java EE после передачи проекту Eclipse
  5. OpenNews: Треть Java-проектов на базе библиотеки Log4j продолжают использовать уязвимые версии
  6. OpenNews: Возможность генерации фиктивных подписей ECDSA в Java SE
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/60812-java
Ключевые слова: java
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (54) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Михаил Сергеевич (?), 00:47, 20/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    А Micro Edition (Java ME) сдохло? Вроде на их сайт зашёл, страничка жива, никаких анонсов об устаревании. Но и новостей не слышно.
     
     
  • 2.3, Аноним (3), 00:52, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > А Micro Edition (Java ME) сдохло? Вроде на их сайт зашёл, страничка
    > жива, никаких анонсов об устаревании. Но и новостей не слышно.

    Попробуй скачать без VPN эту радость

     
     
  • 3.16, Аноним (16), 07:38, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Религия не позволяет использовать VPN?
     
  • 3.24, 12yoexpert (ok), 09:01, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    скачал, в чём проблема?
     
  • 2.60, Аноним (60), 17:40, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Оно полностью проприетарное, а опенсорсная реализация SquirrelJME бесполезна, так как хреново документирована и тулчейн отсутствует
     
     
  • 3.65, Аноним (-), 19:40, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Оно полностью проприетарное

    Так написал, будто это что-то плохое.

     

  • 1.5, Аноним (5), 00:59, 20/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    > сохранена обратная совместимость с прошлыми выпусками платформы Java

    Как же это не прогрессивно! Гтк/Гномеры осуждают.
    И разработчики Glibc тоже.

     
     
  • 2.12, Аноним (12), 07:07, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Гарантируется? Или так же, как с предыдущими версиями - повышение версии означает разработку заново.
     
     
  • 3.29, pelmaniac (?), 09:43, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +5 +/
    >повышение версии означает разработку заново.

    это пассаж про жабу? сама жаба ломается очень мало по сравнению с остальными фреймворками. недавно решил обновить легасятину которая работала под jdk11 и wildfly 2019-го года (jsf, primefaces итд).

    в целом, заняло час-два и переписывать пришлось ТОЛЬКО куски из jsf и primefaces.
    ну и import-ы поменять с javax на jakarta (99% работы делает IDE)

     
  • 2.15, Аноним (16), 07:35, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Что-то незаметно, чтобы из GLibc выкидывали уже имеющиеся функции C.
     
     
  • 3.72, n00by (ok), 09:02, 21/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
       Отличия между библиотекой C и ядром
           В glibc до версии 2.3, обёрточная функция _exit() вызывала системный вызов ядра с тем же именем.
           Начиная  с  glibc  2.3,  обёрточная  функция  вызывает  exit_group(2),  чтобы завершить все нити
           процесса.
     

  • 1.7, penetrator (?), 03:00, 20/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    String query = "SELECT * FROM Person p WHERE p."
           + property + " = '" + value + "'"; // было

    похоже на трындеж, не может быть чтобы они не знали, что такое параметры

     
     
  • 2.17, нах. (?), 07:52, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    И в каком диалекте sql property у тебя может быть - параметром?

    И нет, не знают - это конкретные библиотеки должны знать.

    Да и зачем нужен этот костыль в современных ЯП чтобы собрать строку из частей - тоже неочевидно. От sql injections вопреки распространенным фантазиям - не защищает. Валидируйте юзерский инпут, блжд, а не надейтесь на костыли.

     
     
  • 3.35, Аноним (35), 10:44, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    ты вставляешь в sql валидированный инпут?
     
     
  • 4.43, нах. (?), 12:17, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > ты вставляешь в sql валидированный инпут?

    если тебе никаким образом не надо вставлять в sql запрос данные (а то и как тут - параметры) пришедшие извне - зачем вообще выполнять этот запрос, да еще и программно?

    Обычно таки да - мы храним там данные, имеющие какое-то отношение к тому кто по ту сторону от монитора, и делаем к ним обращения - опять же в интересах того кто по ту сторону монитора, а не для себя самих. Приходится как-то обмениваться с ним данными и параметрами запроса, вот удивительно-то.

     
  • 3.46, penetrator (?), 12:31, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > И в каком диалекте sql property у тебя может быть - параметром?
    > И нет, не знают - это конкретные библиотеки должны знать.
    > Да и зачем нужен этот костыль в современных ЯП чтобы собрать строку
    > из частей - тоже неочевидно. От sql injections вопреки распространенным фантазиям
    > - не защищает. Валидируйте юзерский инпут, блжд, а не надейтесь на
    > костыли.

    зачем мне в проперти, если нужен для value, а там все норм с параметрами

     
     
  • 4.48, нах. (?), 12:47, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    потому что в приведенном примере - помимо value еще и имя поля - тоже переменная.

    Если ты будешь в одном месте подставлять эту переменную, а в другом отдельном - переменную для value - еще и двумя разными способами - код разумеется станет в десять раз понятнее и удобочитаемей. Нет.

    Параметрические sql-конструкции - это просто костылик, причем пришедший из pl/sql
    Если его тебе реализует (для него это может быть бесплатно) апи конкретной субд - пользуйся на здоровье, а зачем в синтаксис универсального языка-то такое тащить?

     
     
  • 5.53, Аноним (53), 14:18, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Если его тебе реализует (для него это может быть бесплатно) апи конкретной субд - пользуйся на здоровье, а зачем в синтаксис универсального языка-то такое тащить?

    Пример иллюстрировал вообще-то интерполяцию строк, а не правильность построения SQL-запроса. Без SQL-специфичных слов интерполяция тоже работать будет. Чего ты на этом SQL зациклился, непонятно.

    > Да и зачем нужен этот костыль в современных ЯП чтобы собрать строку из частей - тоже неочевидно

    Если тебе неочевидно, для чего нужна интерполяция строк - тебе реально надо поднимать квалификацию.

     
     
  • 6.54, нах. (?), 14:26, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Пример иллюстрировал вообще-то интерполяцию строк

    я не знаю что такое "интерполяция строк", но второй вариант примера создает java.sql.Statement (и подозреваю еще и кинет exception при попытке запихать в качестве value '""\; truncate table;')

    действительно, причем тут sql?

    И я отвечал людям, удивленно спрашивавшим - зачем оно им надо когда в самом sql-коннекторе почти всех типичных баз - есть подстановка параметров при исполнении запроса (и туда такое подставить не получится, а если и да - то эту ошибку надо свалить на авторов коннектора).

     
     
  • 7.59, Аноним (53), 17:16, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > я не знаю что такое "интерполяция строк"

    Ну, это то, что ты называешь "сборкой строки из частей".


    > второй вариант примера создает java.sql.Statement

    Нет, всё-таки java.lang.String. Пример всё-таки про то, что в Java 22 ввели новый метод интерполяции строк. В дополнении к уже имеющимся, но менее удобным, как, например, String.format(). А не про SQL. Хоть там в строке и есть SQL-специфичные слова.

     
     
  • 8.61, нах. (?), 17:50, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    да, похоже новость переписали на ходу Тогда неинтересно И нет, переписали сно... текст свёрнут, показать
     
  • 2.67, Tron is Whistling (?), 21:05, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Параметры ладно, куда (some SQL).EscapeString() дели, или это теперь типа нормально?
     
     
  • 3.68, нах. (?), 21:20, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Его, оказывается, надо теперь самому имплементить - тогда будет работать (прозрачно!) почти так как написано в изначальном а не дважды уже отредактированном тексте новости.

    Хошь эскейпинг пили, хошь што. А так как у них сейчас - вообще не будет работать.

     

  • 1.8, Аноним (8), 03:20, 20/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Не густо. Вот как надо:
    https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-8/
     
  • 1.11, Аноним (11), 05:52, 20/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    >  void main() { ... }

    Не прошло и 20 лет...

    > Statement query = SQL."""SELECT * FROM Person p ... """

    Омг, как это теперь развидеть?

     
     
  • 2.62, нах. (?), 17:53, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >> Statement query = SQL."""SELECT * FROM Person p ... """
    > Омг, как это теперь развидеть?

    не ссы, подними глаза к тексту новости и удивись. Развиделось?!
    Вот то-то же! Кто владеет прошлым тот владеет будущим.

    Не запилили они метод SQL, померещилось.

     

  • 1.19, Аноним (19), 08:02, 20/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Добавлена седьмая предварительная реализация API Vector

    Седьмая Карл!
    Сколько ещё можно?
    Эта панама уже достала.

     
     
  • 2.42, BratishkaErik (ok), 12:12, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Странно, что тут не написано, но они зависят от реализации 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.

     

  • 1.31, Аноним (31), 10:01, 20/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Разработанная в рамках проекта OpenJDK эталонная реализация Java 22 полностью открыта под лицензией GPLv2

    Что же они тогда с гуглами судились за использование частей java api в андроид, когда андроид тоже открытый?! Красношапка тоже чудит с лицензией, с одной стороны gpl, а пользоваться обновлениями нельзя из-за патентов в коде, который тоже содержит gpl.

     
     
  • 2.55, нах. (?), 14:28, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >>Разработанная в рамках проекта OpenJDK эталонная реализация Java 22 полностью открыта под
    > Что же они тогда с гуглами судились за использование частей java api

    кто "они"? Владелец Java SE - орацл. И у нее ни разу не GPL (и вообще с 8.какойтоминорщины версии - оооочень стремная лицензия).

     

  • 1.32, MrAnderson (?), 10:06, 20/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Самый лучший язык для тех, кто любит ООП.
     
     
  • 2.33, Аноним (33), 10:17, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это C++
     
     
  • 3.38, Аноним (38), 11:45, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    …Худшее, что могло случиться с ООП. Язык, который успешно похерил саму концепцию.
     
     
  • 4.41, Аноним (41), 11:53, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Так по иронии, другого-то, чтоб и ОО, и в машкоды без всяких языковых ВМ, и достаточно используемого, не видно. D, вроде, есть, но почти не летает.
     
     
  • 5.44, Аноним (44), 12:23, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Так по иронии, другого-то, чтоб и ОО, и в машкоды

    В общем, ежики давились, но продолжали жрать кактус ООП :)

    Понимаете ли, но ООП и машкоды - это 2 ортогональные сущности. ООП генерирует кучу ненужного машкода, нехило напрягая процесор, и тем способствует экологической катастрофе на Земле.

    Я вам анекдот приведу старый, который вы по малолетству можете и не знать.
    Страуструпа спрашивают:
    - Можно ли на С++ писать системные вещи?
    Страуструпа отвечает
    - Можно - я тут намеднись на С++ написал DOS, она занимает всего 60 Мб.

    ПС. шутка юмора в том, что настоящая MS DOS умещалась на дискету в 640 Кб.

     
     
  • 6.49, нах. (?), 13:12, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> Так по иронии, другого-то, чтоб и ОО, и в машкоды
    > В общем, ежики давились, но продолжали жрать кактус ООП :)
    > Понимаете ли, но ООП и машкоды - это 2 ортогональные сущности. ООП
    > генерирует кучу ненужного машкода, нехило напрягая процесор,

    эммм... ты конечно же можешь показать пример? Мы его прямо при тебе сунем в gcc и посмотрим на результат.

    Вообще-то ООП генерить призван не ненужные машкоды, а очень даже нужные (и в случае cfront ныне покойного - даже не маш а вполне сишные коды) коды ЗА тебя. А так ты бы сам сидел и ляпал копипастой бойлерплейтный код, отличающийся от предыдущего тут типом параметра, а там вариацией его обработки, и так сто раз.

    Если мы про "настоящий" ооп, c++ style, конечно. А кастрированный (без наследования) - вообще никакого "лишнего" кода генерить не может - что написано, то и генерит, в ровно одном экземпляре. Единственная ценность - защита от шаловливых ручек, не позволяющая все свести к fortran4 с COMMON блоком.

    > Я вам анекдот приведу старый, который вы по малолетству можете и не

    глупый.

    А современный и умный - "я переписал на c++ msdos, попутно исправилась сама собой тонна ошибок, поскольку язык сильно уменьшил количество клацаний мной по клавиатуре, но есть один нюанс - она пока еще компилируется"

    "Это верно. Это у вас получилась художественная правда", а не перепев глупостей.

     
  • 6.51, Аноним (53), 14:07, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Я вам анекдот приведу старый, который вы по малолетству можете и не знать.
    > MS DOS умещалась на дискету в 640 Кб.

    Если вы настолько старый, что такие анекдоты помните, надо бы ещё помнить, что последние версии DOS на дискетку ну никак не умещались, ни дистрибутив, ни тем более инсталлированная версия. А дискет в 640 КБ вообще не существовало в природе.

    Ну и про С++ и машкод у вас примерно такого же уровня познания.

     
     
  • 7.70, Аноним (44), 23:07, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Ну, расскажи нам про машиногенерацию шаблонов С++  (template). Посмеемся вместе над избыточностью кода. Люблю фанатиков за их упертость - не знают, что творят, прости их, Господи.

    ПС. я абсолютно не против обращения на ты, и не надуваю от важности щек по поводу возраста. У меня есть внтренний оценщик, у которого С++ - мертворожденный был и останется. Даже Java лучше - но это на VM.  А так - modern C, Rust и ADA(Spark) мои фавориты. Хотя, вместо С хотелось бы что-то более современное, но пока нет, Zig - не тянет. А С++ - полнейший тупик, причем изначально.

     
     
  • 8.73, n00by (ok), 09:11, 21/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Рассказываю Твой шаблон с подменой мне на нам обнуляет твой сарказм В отли... текст свёрнут, показать
     
  • 6.57, Аноним (41), 14:40, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Поинтересуйся IDE для Borland C++ 3.x под DOS на чём написан был, анекдотчик ты наш.
     
     
  • 7.63, нах. (?), 17:57, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Поинтересуйся IDE для Borland C++ 3.x под DOS на чём написан был,
    > анекдотчик ты наш.

    на паскале же ж. На плюсах (не современных ни разу а на "си с классами") была турбовижн-c++ которая входила в (расширенный!) комплект его поставки, но сама ide вроде бы на паскалевской версии, как и у борланд паскаля. Судя по некоторым особенностям, которых в сишной не было.

     
  • 6.58, Аноним (41), 14:44, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    И да, в Wiring (C++ c гейшами) без проблем классы с виртаальными методами успешно помещаются в Ардуинку.
     
     
  • 7.64, нах. (?), 18:01, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > И да, в Wiring (C++ c гейшами) без проблем классы с виртаальными

    си с классами, не?
    > методами успешно помещаются в Ардуинку.

    блин, логично что пустое место успешно помещается в ардуинку.

     
  • 6.74, Golangdev (?), 11:19, 21/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > ООП генерирует кучу ненужного машкода, нехило напрягая процесор

    я ужасную вещь скажу - если для твоего тостера/калькулятора/etc - то, что сгенерировал компилятор (как это применимо к джаве кстати, имея что компилируемое там бегает на JVM), так вот, то, что сгенерировал компилятор - является проблемой - так не используй джаву.

    она не для этого. выбрось эту идею из головы. она для PC/серверов/смартфонов(с натяжкой в виде DEX/Dalvik)

     
  • 6.75, dannyD (?), 23:17, 21/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >>ПС. шутка юмора в том, что настоящая MS DOS умещалась на дискету в 640 Кб.

    если мы говорим о DS/DD, то они были 360/720 кБ для 5.25", и 720 кБ для 3.5".

    MS-DOS 5.0 была 6 дисков по 360 кБ.

     
  • 4.52, Аноним (53), 14:10, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Худшее, что могло случиться с ООП

    Худшее, что могло случиться с Опеннетом. Неосилятор рассуждает "со знанием дела", перепечатывая чужие мысли.

     
  • 3.71, Аноним (71), 02:48, 21/03/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вообще-то SmallTalk
     
  • 2.39, Аноним (41), 11:46, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Только всякие JVM, CLR (.NET) и проч. лучшесть таких языков сводят на нет.
     

  • 1.45, Швондик (?), 12:29, 20/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    a Android IDE 4.0 можно ли подключить к этой  Java SE 22 ?
     
     
  • 2.47, luid (ok), 12:41, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >> a Android IDE 4.0 можно ли подключить к этой  Java SE 22 ?

    Можно. Подключайте.

     
     
  • 3.66, Швондик (?), 20:01, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    у меня тогда программки не собираются - ругаются на ошибки в Java
     
     
  • 4.69, нах. (?), 22:44, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    это опенсорсие - исправляй!
     

  • 1.76, Аноним (76), 00:56, 22/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Оно ещё живо? Java вообще используется в каких-нибудь новых проектах?
     
     
  • 2.77, Аноним (53), 14:07, 22/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Унылый вброс какой-то 👎
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру