Ответы пользователя по тегу Java
  • Как изменить размер квадратов в фиксированном поле, исходя из количества всех его клеток??

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Динамически рассчитывать? А вообще не совсем понятно что именно вы хотите. Надо чтобы при изменении окна прямоугольники всегда растягивались под размеры?
    Ответ написан
  • Почему в интерфейсах не надо указывать модификатор доступа?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Связано с тем что интерфейс это всегда "вершина айсберга" которая скрывает в дальнейшем саму реализацию. Можешь считать это точкой взаимодействия.
    Ответ написан
    1 комментарий
  • Любой Java байт код можно успешно декомпилировать и просмотреть его?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Именно полностью оригинальный код не получится(если конечно не включены все дебагсимволы). Код восстановится до конструкций похожих т.е.:
    условно говоря кострукции
    for(int i:0;i<100;i++){}
    
    или
    for(Object o: objects){}
    
    и еще тонна вариантов

    В байткоде будет иметь одинаковый вид(не принимайте наслово но это образно говоря). А значит декомпилятор увидит подобный байткод и восстановит конструкцию именно ту которую посчитает наиболее удобной но не ту которая была в оригинале.
    Аналогично с остальными случаями, констанатами,функциями,классами.
    Кроме того не будут учитываться еще тонны тонкостей, взять хотя бы аннотации.

    Т.е. в целом код будет читабелен, скорее всего но не факт компилируем, вероятно что рабочим но с глюками которых не было в оригинале.
    В общем все напрямую зависит от компилятора, стиля кода, используемых фич которые что то делают именно на этапе компиляции, сахара библиотек и языка.

    В том же с\с++ можно декомпилировать до асемблера а затем восстановить уже его до С, который также вполне читабелен и местами рабочий. Если есть дебаг символы то еще и тонны других вещей восстановится (имена констант\переменных\функций\коментариев).

    Короче все очень относительно но в целом java код даже скомпиленный с оптимизациями намного более читабелен но это связанно с особенностями работы и самих бинарных файлов.
    Ответ написан
    Комментировать
  • Как написать generic фабрику?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Если я правильно понял задачу то что то типа такого.
    public interface Handler<T> {
      Object handle(T obj);
    }
    class FordHandler implements Handler<Ford>{...}
    /// в фабрику
    Map<Class<T>, Handler<T>> registry = new HashMap<>();
    public void registerHandler(Class<T> carType, Class<? extends Handler> handlerType) {
        registry.put(carType, handlerType);
    }
    public <T> Handler<T> getHandler(Class<T> clazz) {
      return registry.get(clazz).newInstance();
    }
    ///наполняешь фабрику
    factory.registerHandler(Ford.class, FordHandler.class);
    factory.registerHandler(Audi.class, AudiHandler.class);
    ///
    List<Car> carList;
    List<Object> result;
    carList.forEach((car) -> {
        result.add(factory.getHandler(car.getClass()).handle(car));
    })
    Ответ написан
    Комментировать
  • Как повысить отзывчивость обработки нажатий на клавиши навигации?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    %тролейбус_из_буханки_хлеба.жпг%
    Javafx совсем для другого сделана, в т.ч. и реализация 3д в ней. В играх все максимально предсказуемо реализовано, простой цикл в котором все крайне последовательно происходит и отрезано абсолютно все что ненужно.
    Конкретно тут надо сначала читать как работает цикл в javafx, что за чем следует и т.д.. Дальше в любом случае javafx тащит за собой тонны абсолютно ненужного кода. Кроме того для правильной реализации всего и вся нужно учитывать дельту времени от которой пляшет вообще все в реалтайме. В общем я даже не знаю как это описать. Ну попробуйте представить что вы забиваете гвозди микроскопом, а теперь что гвоздей надо забить тысяч пять. Можно? можно! Удобно? не совсем. Практично? абсолютно нет.

    В общем если хотите в реалтайм игры то смотрите на jmonkey engine, libgdx, если по хардкорнее то JOGL, LWJGL.

    PS, как вариант попробуйте рисовать в canvas, но опять же львиную долю проблем это не решит никак. Если прям игра и javafx то что то более размеренное но не реалтайм где вот такие проблемы будет видно.
    Ответ написан
  • Возможно ли десктопное приложение на java подключить к онлайн базе данных?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Теперь задайте себе пару вопросов:
    1) При чем тут javafx и каким боком она связано с сутью вопроса?
    2) У вас есть рабочее приложение которое работает с БД, Логично что приложение ваше и вы его писали, следовательно гдето в таком явном месте есть самая обычная строка подключения к БД в которой написано "localhost". Так вот это не намекает на место с которого стоило начать и попробовать вписать тут ссылку удаленного сервера?
    3) Вы хотя бы думали о абсурдности и глупости своего вопроса?
    Ответ написан
    Комментировать
  • Как сравнить данные объектов в двух ArrayList?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    В вашем случае все просто, но это не совсем правильно т.к. сложность вырастает в обсчетах.
    Нужен просто вложенный цикл.
    Цикл астероид_итератор астероиды{
    цикл монета_итератор монеты{
    если монета_итератор.колизия(астероид_итератор.coords) удалить обоих
    }
    }

    Но опять же это не совсем правильно и если объектов много то вообще неприменимо так вот в лоб.
    Ответ написан
  • Как анимировать рандомный символ в label в JavaFX приложении?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Готовое врядли что то есть но сделать такое не проблема. Пишите свой компонент. Логика предельно простая и реализовать можно несколькими способами. Честным но тяжелым или легким но обманом
    Тяжелый по честному крутить массив, по легкому заранее отрендренную анимацию пускать.
    Ответ написан
  • Java реализация метода?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Дженерики.
    Ответ написан
    Комментировать
  • Как упростить написанный код?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Легко,
    во первых как отвечал в прошлом вопросе НЕ ИСПОЛЬЗУЙ Scene Builder, пиши все руками можно даже без fxml.
    во вторых оберни весь кошмар с анимацией и кнопочками в отдельный класс компонент, код уже сократится в разы. Деактивацию\активацию других элементов также легко уместить до единого места путем получения у родительского контейнера всех дочерних и выставления в них setDisable
    Ответ написан
    Комментировать
  • Как оптимальнее всего реализовать систему частиц на Java?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Штатными средствами libgdx?
    А вообще у libgdx есть специальные рекомендации и реализации базовых штук для работ с памятью в т.ч. специальных пулов.
    Ответ написан
  • Где почитать про написания своих контейнеров?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    В Java есть такая штука как JSR что является спецификацией\описанием как это должно быть и что делать.
    К примеру OSGI реализует
    Sun JCP JSR-8 (Open Services Gateway Specification)
    Sun JCP JSR-232 (Mobile Operational Management)
    Sun JCP JSR-246 (Device Management API)
    Sun JCP JSR-249 (Mobile Service Architecture for CDC)
    Sun JCP JSR-277 — JSR-277: Java Module System
    Sun JCP JSR-291 (Dynamic Component Support for JavaTM SE)

    Т.е. взяв вышеперечисленные jsr и реализовав все по описанию получите реализацию osgi.
    Ответ написан
    Комментировать
  • Ide под Linux для Java разработки?

    jamakasi666
    @jamakasi666 Куратор тега Linux
    Просто IT'шник.
    Спокойно сижу в , о хоспаде, NetBeans. Дело привычки, ставьте все и пробуйте и уже из личных впечатлений пользуйтесь тем что удобнее именно Вам.
    Совсем другое когда есть корпоративный стандарт и тогда деваться некуда и придется привыкать к конкретной IDE. Я такое встречал в крупной конторе где обязательно только Eclipse и строго определенной версии которую к тому же сами собирают.
    Ответ написан
    Комментировать
  • Как реализовать обмен файлами между устройствами в сети?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Все зависит от конечной задачи и нюансов в ней, вариантов в общем масса:

    1) Использовать готовые протоколы типа ftp\scp\ssh\etc и их реализации клиент-сервер. В такой ситуации придется мириться с их проблемами\ограничениями\сложностями.
    2) Пойти тупым путем, установить соединение, открыть стрим файла и пихать его в сокет, на другой стороне также открыть стрим и пихать все пришедшее на сокет в него. Тут уже сами себе буратино и можете извращаться и решать проблемы сами.
    3) Пойти правильным путем и написать сначало тз для себя в котором точно определитесь что и как необходимо, необходимые меры надежности передачи и все возможные проблемы и методы их решений.
    Т.е. образно говоря можно взять принципы передачи пакетов tcp\ip за основу:
    1) Перед началом передачи файла передать crc файла клиенту, клиент посмотрел что такого нет и отвечает что ждет приема. Можно расширить и к примеру ответить что файл есть но изменился а значит надо передать только изменные блоки.
    2) Сервер получив согласие клиента разбивает файл на чанки(некоторый заданный размер блоков)
    3) Сервер отправляет crc клиенту и блок, клиент получает crc и получает блок затем сверяет его с crc и отвечает что все ок, сервер делает также со всеми оставшимеся блоками, если сервер не получил ок от клиента то отправить блок снова. Если расширять то можно сделать новый ответ серверу что такой crc для такого блока есть и давай следующий.
    N) дорабатываешь все это до желаемого результата, к примеру добавляешь сжатие блоков, нумеруешь их чтобы не слать последовательно а была возможность асинхронной передачи, добавляешь шифрование и т.д.
    Ответ написан
    2 комментария
  • В чем разница между JRE и обычной Java?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Java это сам язык(набор спецификаций и рекомендаций).
    JRE (java runtime enviroment) это среда исполнения языка java, т.е. jvm и набор библиотек. Т.е. то что выполняет готовый java код
    JDK (java developer kit) это набор инструментов для написания кода и включенный JRE. Тут помимо JRE идут утилиты для разработки(компилятор и т.д.)
    JVM (java virtual machine) виртуальная машина(железо) которое исполняет байт код языка

    Добавлю пищу для размышлений насчет фразы что java это спецификации и рекомендации. Например Java в андроид это не тоже самое что и в java se для ПК\Mac\Linux. Не тоже самое что и java ME, не тоже самое что Java embendet. И т.д. . У всего перечисленного за основу взяты спецификации Java и исполнены в той или иной мере но львиная часть кода совместима и ведет к ожидаемым результатам. Т.е. условно говоря java это бетон, а вот что из этого бетона сделано, а это может быть погреб\сарай\дом\небоскреб\торговый центр уже конкретная реализация спецификаций и рекомендаций или расхождения с ними. К слову реализаций java vm существует множество. Все спеки JSR можно найти тут и по ним реализовать любой аспект java или самой jvm.
    Ответ написан
    Комментировать
  • Никак не могу настроить порты WildFly. Что делать?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Как вариант запустить в контейнере синего кита). Спорный вариант, но всетаки вариант с меньшим гемороем.
    Ответ написан
    Комментировать
  • В чем разница между paint & paintComponents?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Вообще в awt и свинге тонны рефлексий и неявных вызовов, тема достаточно сложная проще говоря.
    Хорошо разжевано тут немного.

    Конкретно у вас вероятно не хватает аннотации override и в названии метода ошибка в виде лишней буквы в конце paintComponentS . Ну и я до конца не уверен т.к. не помню точно, но кажется что именно paintComponent вызывается при полной отриосвке компонента что редко т.к. все остальное время будет дергаться метод paint в котором нет вашей картинки. Как то так.
    Ответ написан
  • Как "автоматизировать" выполнение скрипта java?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    А это уже наказуемо и очень больно =)
    Ответ написан
    3 комментария