Ответы пользователя по тегу Java
  • Почему не работает import java.util.Scanner?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    java.util.Scanner - начиная с версии 1.5.

    Надо проверить на какую версию среда настроена.
    Ответ написан
    Комментировать
  • Возможно ли соединить работающий java код и так же работающий скрипт python?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Самая простая интеграция - это pipe в Unix. Этому методу 100 лет в обед но обычно
    разработчики не помнят о нем.

    java app.jar | python3 app.py

    Из недостатков - это в одну сторону работает. Как MQ.

    Если запускается джоб на java который передает информацию к python-job то можно вызвать через
    ProcessBuilder. Здесь можно проверить код возврата и принять решение о том правильно
    ли Python отработал. Из недостатков - запуск процесса - не очень быстрое событие поэтому
    на высокую частоту не стоит расчитывать.

    Если взаимодействие - более быстрое и сложное типа RPC то тогда java может быть например REST
    клиентом а python - сервером.
    Ответ написан
    Комментировать
  • Как правильно возвращать значение из геттера?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Желательно возвращать либо иммутабельные объекты (LocalDateTime вместо java.util.Date)
    либо клонировать.

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

    Разумеется жизнь полна исключений и тут главное чтоб вся команда разработчиков ПОНИМАЛА что
    ты сделал и для чего. Иначе будут конфликты и война правок в коде проекта.
    Ответ написан
    Комментировать
  • Есть готовый EditText для ввода размеров изображение?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Ты можешь сделать два edit box и поставить их рядом слева-направо.
    Ответ написан
  • Как создать 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.rmi через удаленное соединение?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Скачивать можно без rmi.

    Вот пример простой качалки https://stackoverflow.com/questions/921262/how-can...

    RMI это сложная и крайне неудобная технология для Java разработчика. По хорошему
    вам надо знать хотябы еще один язык C или С++ чтоб продолжать разработку.
    Ответ написан
    Комментировать
  • Как определить способ запуска процесса?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Jconsole, JVisualVM поднимают очень много информации по Java-процессу. Посмотри.
    Ответ написан
    Комментировать
  • Что изучать для написания своего Javascript на Java?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    JavaScript на Java уже писали много раз. Поищи по ключевым словам Rhino, MVEL.

    Написание своего собственного языка может стать работой всей жизни. При этом
    тебе еще надо успевать делать игру. Поэтому доверь лучше языковые задачи
    тем людям которые уже тратят кучу лет времени на это.
    Ответ написан
    2 комментария
  • Как хранить данные при работе с Apache Lucene?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Apache Lucene вообще не знает что такое файлы. Он оперирует понятием документ
    (org.apache.lucene.document.Document) и поля документа (Field, StringField e.t.c).
    Поля могут быть Stored (просто храниться) или Indexed (участовать в генерации текстового
    индекса).

    Поэтому посмотри учебные примереы с Lucene и попробуй перезадать вопрос по другому.
    Ответ написан
  • Как правильно использовать внешние библиотеки на Java?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Тебе надо обязательно прочитать что такое манифест
    https://docs.oracle.com/javase/tutorial/deployment...

    Большинство ответов на твои вопросы лежит там. Существуют разные методики упаковки
    приложения в jar-артифакт. Можно делать зависимости внешними. А можно создавать
    так называемый fat-jar (толстый jar) куда будут перепакованы все внешние зависимости.
    Shade plugin, jar plugin и еще много плагинов этим занимаются для maven сборщиков.

    Почитай еще что такое Java9 modules. Это тоже полезно.
    Ответ написан
    Комментировать
  • Почему jar не проигрывает звук?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Ты прикалываешся такие молчаливые выходы делать?
    System.exit(-1);
    Пиши println... там вышли с таким-то кодом ошибки. Вообще если тебе лень придумывать имена чекпоинтам
    - делай просто нумерацию. ":1", ":2" и по ним будешь понимать где вылет был.
    Ответ написан
  • Как часто используется Spring Security? Стоит ли его учить джуну?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Ты пришел в хабр спрашивать что учить? У хабра нет учебного плана.
    План бывает на курсах которые обучают Spring. Найди любой курс и
    посмотри какую последовательность знаний о Spring они предлагают.

    Spring Security это не та тема с которой обязательно начинать.
    Ответ написан
  • Какой курс Java выбрать новичку с нуля?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Нужен ментор, который шпыняет каждый день и ставит сроки. Иначе ничего не будет. Через неделю
    у тебя энтузиазм прогорит и ты пойдешь шпилить в PUBG.
    Ответ написан
  • Как получить доступ к логическим дискам на выделенном сервере?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    С помощью Java

    ProcessBuilder.start()

    ты можешь вызывать скрипт операционной системы (bash или Windows CMD) и если
    у текущего пользователя хватит прав то ты можешь увидеть результат работы df например
    $ df
    Filesystem      1K-blocks      Used Available Use% Mounted on
    none              8061940         4   8061936   1% /mnt/wsl
    .....

    потом забрать этот результат через stdout и далее парсить результат в Java.
    Ответ написан
    5 комментариев
  • В каком контексте значение класса String является неизменяемым в отличии от StringBuilder?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Почему все методы StringBuilderнельзя было поместить в класс String, чтобы не плодить классы строк?

    Главный поинт при создании immutable String - безопасность кода. Когда компиллятор точно
    знает что value строки не изменится - то он может доказать много кейсов и гарантировать что
    разделяемая память не будет сломана. Особенно это важно для мультипоточки. Когда
    разные потоки владеют строкой и здесь сам вопрос доказательства вдруг становится очень важным.

    Язык С++ например такой защитой не обладает и для него строка как фундаментальный тип
    может иногда мутировать. Тоесть если вы старались писать правильно то она конечно не мутирует.
    Но в этом есть большая разница между C++ и Java. На уровне платформы гарантировано отсуствие
    какого-то класса ошибок.

    StringBuilder - это попытка улучшить перформанс для кумулятивных строк. Тоесть например
    если вы формируете текстовый файл-отчет в памяти то вы будете постоянно делать конкатенации
    строк. Это конкатенации вызовут аллокацию-уничтожение памяти. (в скобочках помним
    что строка - не мутабельная поэтому изенить ее можно только создав новую копию с добавлением
    чего-то нового. Причем с учетом роста самой строки , драматично будет расти эффект нагрузки на память.

    Специально для уменьшения этой проблемы (реаллокации и копирования) был создан StringBuilder.
    Это вообще не строка а как-бы мутирующий буфер куда можно добавлять в хвост строки. И в конце
    когда все готово - из буфера берется иммутабельная строка и на этом работа билдера закончена.

    Immutable строки - это гениальное изобретение. Оно реализовано во многих языках и платформах
    и оно практически спасает разработчика бизнес-приложений от трудно уловимых ошибок.
    Ответ написан
    2 комментария
  • Как работают транзакции в 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 делегирует
    гарантии по изоляции к целевой системе.
    Ответ написан
    Комментировать
  • Как правильно обрабатывать SQLException?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Скорее всего коды SQL ошибок зависят от DBMS. Например я по старой памяти помню что если
    в коде вы видите ORA-00001 то вы скорее всего используете Oracle и ваша ошибка
    связана с нарушением Primary KEY во время INSERT/UPDATE.

    Другие DBMS (Postgres/MySQL) будут иметь другие коды ошибок.
    Ответ написан
    3 комментария
  • Как перевести этот блок if в математическую функцию?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    В математике есть разные способы задания функций.
    Можно задать таблично. Например явно перечислить

    x   |  y
    ..  | ...
    8   | 30
    9   | 30
    10  | 50
    11  | 50
    ...

    Это используется в криптографии для внутренних замен внутри раунда в шифрах.

    Можно описать функцию как набор булевых функций и минимизировать их по Карно или Квайну
    для достижения какой-то минимальной формы. Это - тоже вполне себе метод.

    x1,x2.....x32   |  y1...y32
    ----------------|------------
     00 1010        | 01 1110
      .....         | 11 0010
                    | 11 0010


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

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

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

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Если почитать обучающий портал A tour of the C# language
    https://learn.microsoft.com/en-us/dotnet/csharp/to...
    то там вообще нигде не пишут про кросс-платформенность.

    Мне кажется что этот миф пошел из обсуждения что платформа .Net создавалась MS в противовес
    Java чтобы иметь конкурентное преимуществое для чисто своей Windows-разработки но при этом
    обеспечить удобства (Managed Memory, CLR e.t.c).
    Ответ написан