Задать вопрос
  • Как создать exe из jar файла javafx приложения?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    С помощью исходников и Graalvm компиллятора можно собрать выполнимый файл для Java приложений.
    Но надо внимательно читать про стек технологий которые использованы в самом приложении.
    Graal компиллятор не гарантирует поддержку всех модулей Java. Для каждого конкретного случая
    надо смотреть и тестировать на месте.

    https://www.graalvm.org/

    С launch4j я не работал. Я подозреваю что это не компиллятор а просто упаковщик который собирает
    обертку для Java Runtime и нужного артефакта.

    Судя по доке есть опции вывода детальной информации по запуску. Смотрите там https://launch4j.sourceforge.net/docs.html

    --l4j-debug-all
    Ответ написан
    Комментировать
  • Возможно ли автоматически конвертировать большой проект с Java на C++?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    В C++ и Java разная идиоматика, поэтому если перевести с одного языка на другой не изменяя ничего в программе, результат получится хуже. Если для конвертации использовать даже самый совершенный из существующих на сегодняшний день ИИ, получится вовсе запредельный хлам.
    Ответ написан
    2 комментария
  • Есть ли SDK у метамаск?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    Вот прямо сейчас у себя в проекте скрешиваю java & kotlin.
    Пришлось форкнуть опенсорс на котлине из-за того, что он был слишком правильным.
    Исходная либа кидает в нескольких местах исключения на неправильные исходные (полученные от реального перефирийного устройства) данные.

    build.gradle.kts  проекта пришлось дополнить 
    plugins {
        id("com.android.application") version "8.2.1" apply false
        id("org.jetbrains.kotlin.android") version "1.9.10" apply false
        id("org.jetbrains.kotlin.jvm") version "1.9.0" apply false
    }
    
    в такой же файл приложения
    plugins {
        id("com.android.application")
        id("org.jetbrains.kotlin.android")
    }
    android {
       ....
        kotlinOptions {
            jvmTarget = "1.8"
        }
      .....
    }
    dependencies {
        implementation("androidx.core:core-ktx:1.12.0")
    }


    либа, которую я форкал изначально предполагала взаимодействие из java
    по коду раскиданы собачка JvmOverloads , JvmField, JvmStatic, set:JvmSynthetic
    Ответ написан
    Комментировать
  • Есть ли SDK у метамаск?

    Если эта библиотека сделана на kotlin jvm, то можно сделать так:
    https://stackoverflow.com/questions/59315911/how-t...

    Добавляешь в зависимости org.jetbrains.kotlin и дальше добавляешь эту библиотеку так, будто бы это была обычная java-библиотека из maven или откуда там.
    Ответ написан
    3 комментария
  • В поиске первой работы програмистом, предлагают бесплатную стажировку. Соглашаться?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Народ тут накинул на вентилятор, попробую раскидать по фактам: Варианта на самом деле 3, но мы сведем к очевидным 2:
    1) Вы ищете первую работу в стеке, из опыта у вас приложение ТуДуЛист и Хеловорлд.
    Такое предложение как минимум подарок, как максимум большая удача. Подарок если вам просто дадут поколупаться в серьезном проекте и покажут как работает команда в целом. Большая удача если при этом у вас будет вменяемый ментор и ревьювер, а кода писать вам дадут много. Для конторы это скорее всего в минус, но если у вас все пойдет норм, то к концу срока вы в любом случае уже будете тянуть на джуна. Даже если после этого вы расстанетесь, опыт штука которая навсегда останется с тобой, в крайнем случае вы в первый месяц можете спокойно свалить, если видите что вам там ничего не светит в плане роста. Короче кейс - "надо брать".

    2) Вы уже работали со стеком, знаете как работать с основными инструментами и работали с проектами посложнее чем в первом варианте.
    Если еще и в конторе с какой-никакой командой, то вообще другой коленкор. В данном случае спокойно отказывайтесь, если вам жалко 3 месяца нахаляву работать. Опять же, неплохо было бы хотя бы узнать что в эти 3 месяца вы будете делать забесплатно, возможно ли перейти сразу к фазе 2 в случае вашей очевидной компетенции и т.д., короче есть смысл разговаривать ртом. Короче кейс - "надо поговорить".

    третий вариант по сути нечто среднее, но опять же сводится к 2 - надо говорить.
    Ответ написан
    3 комментария
  • Как избавляться от ненужных записей в бд?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если использовать такие БД как DymanoDb, CosmosDb, Cassandra или кеш Redis, то там сразу
    можно создавать записть с отметкой TTL и указывать сколько времени запись будет актуальна.
    Впоследствии эту отметку можно продлить или сделать живщуей вечно.

    По поводу реляционок типа Postgres.

    В хранении ненужных записей я не вижу проблемы до тех пор пока вы в состоянии такие
    токены идентифицировать и почистить отдельно с помощью джоба который запускается
    раз в сутки например и просто удяляет их по признаку например "состояние ожидания
    ввода числа из СМС". Трекайте это состояние и все будет ОК.
    Ответ написан
    Комментировать
  • В Windows tomcat подключается к MySQL без проблем. Когда переношу проект на удаленный сервер, под управлением Ubuntu - не работает, почему?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    "База работает" - это значит, что вы на Убунте можете сделать mysql -h 127.0.0.1 -u root -p - и вас пустит в консоль с паролем root?

    Вообще, так как вы, уже не делают. "Локально работает" сто лет как означает, что разработчик запускает тот же самый docker-compose.yaml на своём компе - вот тогда имеет смысл говорить о работоспособности. А когда разные ОС, разные версии библиотек и так далее - это баловство. Причина может быть в ста местах.
    Ответ написан
    2 комментария
  • Как сказать «ничего не делаем» используя условные операторы?

    @nApoBo3
    Continue

    Но вообще считается "дурным" тоном использовать не "основное" поведение внутри if.
    Ответ написан
    Комментировать
  • По какому принципу работает очистка памяти в String Pool?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Дурным тоном считается создавать работу для сборщика мусора, как бы быстр он ни был, его работа потребляет ресурсы, которые не безграничны и стоят денег.
    Ответ написан
    Комментировать
  • Автоматическая генерация классов на основе других классов?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Если язык совсем не важен, то есть языки более пригодные для мета-программирования, например в Scala есть макросы, с помощью которых можно такое реализовать, а в Clojure и того проще. Если же ориентироваться на указанные в вопросе теги, то в Java можно написать плагин компилятора, который в процессе компиляции может с помощью Compiler API разбирать исходный код в AST, анализировать полученное дерево и на его основе генерировать новый исходный код.
    Ответ написан
    Комментировать
  • Как работают транзакции в Spring?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Не все режимы изоляции поддерживаются целевой DBMS.
    DEFAULT(-1),
        READ_UNCOMMITTED(1),
        READ_COMMITTED(2),
        REPEATABLE_READ(4),
        SERIALIZABLE(8);

    Перечисление Isolation взято из умных теоретических книжек. Но Oracle к примеру поддерживает
    только READ_COMMITED и SEAIALIZABLE.

    И что ему делать если вы заказали READ_UNCOMMITED ? Поэтому я-бы сказал что Spring делегирует
    гарантии по изоляции к целевой системе.
    Ответ написан
    Комментировать
  • Почему IDEA выделяет красным присутствующие библиотеки?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Попробуйте в идее сделать file -> invalidate caches
    Ответ написан
    1 комментарий
  • Почему не создается файл логирования из артифакта?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Релизная сборка (jar/war/ear) может отличаться по составу файлов от того что видит IDE. Может конфиг собрался не туда.

    Сделай
    <configuration debug="true">
    и процесс инициализации Logback станет более подробным и смотри что он напишет.
    Ответ написан
    6 комментариев
  • Почему пропускатеся return в одном из методов Enum-класса?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Предположительно идет на вход не та кодировка. Попробуй заменить на "male" / "female" и все будет ОК
    Ответ написан
    Комментировать
  • Есть сервера, которые стоит написать именно на Java, а не на Node?

    @Everything_is_bad
    что для REST серверов лучше Node не найти
    это твой главный неправильный вывод, лучший будет тот, который написан на технологии, которую лучше всего знает исполнитель.

    Например стриминговый сервер или сервер для чата, он же относится к разряду типичных запрос/ответ
    еще одна большая ошибка, вообще всё смешал в кучу, "стриминговый" это больше про максимальный pull c сервера, "чата" это про полноценный обмен в обе стороны, а "запрос/ответ" это про базовый http и он для этих обоих случаев, очень невыгодная стратегия, поэтому для них в http написаны свои частные протоколы, например, websocket для нормальной реализации чатов.
    Ответ написан
    5 комментариев
  • Разница между Callable и DeferredResult?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Зачем нужен чат-гпт, когда есть документация?

    DeferredResult provides an alternative to using a Callable for asynchronous request processing. While a Callable is executed concurrently on behalf of the application, with a DeferredResult the application can produce the result from a thread of its choice.
    Subclasses can extend this class to easily associate additional data or behavior with the DeferredResult. For example, one might want to associate the user used to create the DeferredResult by extending the class and adding an additional property for the user. In this way, the user could easily be accessed later without the need to use a data structure to do the mapping.
    An example of associating additional behavior to this class might be realized by extending the class to implement an additional interface. For example, one might want to implement Comparable so that when the DeferredResult is added to a PriorityQueue it is handled in the correct order.


    По факту заметил, что с DiferredRestult могу указывать сам пул потоков, а с Callable нет.

    Грубо говоря, да, разница в этом.
    Ответ написан
    Комментировать
  • Как остановить поток?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Поток завершается только тогда, когда прекращает выполняться код в нём. Поэтому извне остановить потоки нельзя, можно только через волатильную переменную или какой-нибудь примитив синхронизации передать сигнал о том, что выполнение надо прекратить, а в коде потока эту переменную постоянно проверять.
    Ответ написан
    Комментировать
  • Почему в semaphore методы acquaire() и tryAcquire() захватывают блокировку по разному?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    А что тут не понятно?
    1. Все потоки быстро запустились, вызвали tryAcquire и, т.к. он не блокирующий, тут же вызывается Thread.Sleep() на всех потоках - поэтому в первом случае в конце видны Thread-x-released (все потоки закончили работу). Время выполнения всего приложения -
    2. Все потоки постепенно захватывают семафор, т.е. ждут пока предыдущий его освободит и только потом засыпают. Уже тут время выполнения - 1с * (кол-во потоков / 2)

    P.S. Не забывай вызывать Thread.join после запуска!
    Ответ написан
    Комментировать
  • Как проинициализировать по умолчанию переменную?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    class Scratch {
    
        public static void main(String[] args) {
            var a1 = new A();
            var a2 = new A(10);
    
    
            System.out.println(a1); // A{a=5}
            System.out.println(a2); // A{a=10}
        }
    }
    
    class A{
        int a = 5; // default
    
        public A(int a) {
            this.a = a;
        }
    
        public A() {
        }
    
        @Override
        public String toString() {
            return "A{" +
                    "a=" + a +
                    '}';
        }
    }
    Ответ написан
    Комментировать