Задать вопрос
Ответы пользователя по тегу Java
  • Почему возникает ошибка: Exception in thread "main" java.lang.StringIndexOutOfBoundsException: Index -1 out of bounds for length 3?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Ты думал что это функция которая исполняется каждый раз?

    boolean y = x>=0;

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

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Так не делается.

    Согласно лучшим практикам (best practices), ты должен сначала покрыть
    свой код тестами.
    Тоесть представить на наше обозрение проект, который
    компилируется и тестируется. И после этого мы сможем предлагать различные
    improovements для кода базируясь на улучшении производительности
    и на уменьшении например метрик code complexity.

    При этом все изменения не должны ломать тесты. Это - очень важно.

    По коду. Непонятно, почему в методе swapCharacters ты применил StringBuilder
    и в то-же время в textModifier ты решил использовать replace и конкатенацию
    строк. По отдельности к каждому методу нет вопросов. Но есть вопрос по единообразию
    кода. Уж коли ты решился на суровые оптимизации скорости - то нужно выдерживать
    работу в таком ключе. Это - совет по конвенции кода по отношению к своим проектам.
    Договорись сам с собой. Тебе важен перформанс или просто ты делаешь POC и тебе нужен краткий код?
    Ответ написан
    Комментировать
  • Зачем нужны методы, считывающие или вводящие примитивы?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    RandomAccessFile, FileInputStream - это абстракции поверх системного I/O. В идеале они должны
    иметь всего 1 метод. Чтения блока байтов в буфер. Но идя навстречу разработчику они любезно
    добавили чтение примитивов чтоб читать двоичные форматы например JPG, MP3, SQlite и прочее
    в виде sequence из примитивов в правильном порядке.
    Ответ написан
    Комментировать
  • Почему общий размер папки равен нулю?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Надо этот total count учитывать внутри волкера.

    @Override
                public FileVisitResult visitFile(Path path, BasicFileAttributes attr) {
                    totalFiles.incrementAndGet();
                    totalCount.addAndGet(............); // Add file length
                    return FileVisitResult.CONTINUE;
                }
    Ответ написан
    2 комментария
  • Почему не подписывается приложение?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Тебе чтобы глянуть сертификат - безразлично какая версия JDK. Потому что стандарты
    криптографии - это вообще отдельная тема.

    Поставь себе временно JDK-21 и спокойно посмотри все подписи.

    Еще зайди внутрь apk файла и поищи саму подпись. Можно найти глазами.
    Ответ написан
  • Какой правильный класс коллекции для хранения сортируемого списка?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Задача : сделать так, чтоб при принудительном обновлении в первую очередь обновлялись объекты, которые не обновлялись дольше всего.

    Мне не очень понятно, что мешает их обновить сразу?

    Стоимость операций с HashMap, TreeMap достаточно дешевая чтобы этим вопросом вообще не
    беспокоиться.

    Если бы у тебя было очень много объектов и они не влазали бы в heap, то тогда я-бы предложил
    LRU Cache (Last Recently Used). Но у тебя 5000 объектов. Это мало для БД и кеша горячих объектов.
    Ответ написан
    Комментировать
  • Как исправить ошибку при установке Open JDK 17 Java на Ubuntu 22?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Ubuntu 22 уже устарела. Релизнулся 24 LTS поэтому можно переходить.
    По поводу archive.ubuntu.com. Есть много причин почему у вас нет доступа
    в том числе и политические причины. Но попробуйте найти региональное зеркало
    этого репозитария и прописать его хотя-бы в /etc/hosts чтобы доступ шел туда.
    Протокол - не секретный. Без https. Тоесть никакой проверки домена не будет.
    Ответ написан
  • Нынешние реалии стандарта Java?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Каковы нынешние реалии стандарта языка? Используются ли в каких-то моментах фишки новых версий (если это вообще возможно)? Ибо судя по всем статьям, практически большинство до сих пор сидит на восьмёрке.

    Да. Это отчасти правда. Основные заказчики Java разработки - это банки. А они не любят миграции версий
    без какой-то особой причины. Я работал с тремя банками и я могу сказать что большая часть кода - это
    легаси. И совершенно нет никакой надежды что будет bump версии языка. Product owner-ы в таком случае
    задают вопрос - "а что мы с этого будем иметь". И обычно для банка - ничего особенного. В некоторых
    случаях (использование CORBA или JAXb, com.sun.*) повышение версии чревато проблемами. Что-то
    может резко отвалиться в новой версии.

    Самые интересные новшества после JDK8 с моей точки зрения были не в языке а в других слоях JRE/JDK (GC, FFI, vectorization, unmanaged memory). Но вы еще попробуйте эти новшества продать бизнесу. Успехов вобщем.
    На какой версии лучше всего практиковаться в написании кода, да и обучаться в целом?

    Да. Ты можешь брать самую последнюю LTS-версию. Брать preview нет никакого смысла. Очень
    сомнительно что для учебы тебе кто-то даст в туториалах экспериментальные фичи. Скорее наоборот.

    Есть ли вообще предпосылки на переход большей части энтерпрайза в ближайшем будущем (ближе к 2030) на более современную версию? Почему тезис о дорогом переходе не нивелируется тем, что за 10 лет со времён восьмёрки завезли достаточно "контента", например, новый синт.сахар и обновленный GC?

    Никакого глобального перехода на самом деле нет. Потому что нет такой проблемы.
    По сути проблемой например для Java 21 может стать "end of extended support" а он условно отмечен
    например на 2031 год. Вы еще попробуйте доживите до этого года и попробуйте сидеть на одном проекте
    столько лет.

    Java может стать COBOL-ом XXI столетия. Но у нее будет даже меньше проблем чем у Кобола, потому что
    байткод и стек-машина имеет больший потенциал. Тоесть пока жива концепция байт-кода и пока существуют
    процессоры Фон-Нейман архитектуры, можно сказать что Java неубиваема.

    Вообще не стоит вам сильно циклиться только на языке. Параллельно существуют Scala, Kotlin, Groovy, Clojure
    и их само существование делает много альтернатив. Одна JVM - бесконечное число языков.
    Ответ написан
    3 комментария
  • Функция проходит по циклу, но не суммирует значения почему?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Во первых этот огрызок кода не компилируется. Ты уж постарайся публиковать самодостаточный код.
    Чтоб читатели могли собрать его и проверить самые базовые ошибки.

    Во вторых сумма

    res[i] = res[i] + #IN_STM_SUMM[j].doubleValue();

    будет зависить от нескольких проверок условий которые выше по коду не срабатывают. Разберись
    почему эти проверки не сработали и будет тебе ответ.
    Ответ написан
    Комментировать
  • С чего начать создание сервиса бронирования на java?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    99% успеха зависит от того имеешь ли ты вообще опыт разработки веб-приложений во взаимодействии с БД
    например. Какой-либо методички по бронированию не существует. Потому-что все подобные задачи
    по своему уникальны и бизнес как раз хочет иметь всегда решение не похожее на конкурента.
    Поэтому и шаблоны таких решений не очень полезны.
    Ответ написан
    Комментировать
  • Почему не работает 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. Это тоже полезно.
    Ответ написан
    Комментировать