• На чем построить гибкий интерфейс для Desktop приложения на JAVA?

    fornit1917
    @fornit1917
    JavaFX. Там есть WebView, можете и на html+CSS делать.
    Ответ написан
    Комментировать
  • Как вы понимаете, когда и какой метод необходимо использовать?

    В общем меня это сводит с ума и я не понимаю, неужели все сводится к тому,чтобы брать и гуглить?

    Данная методология программирования называется Stack Overflow Driven Development, и практикуется даже программистами экспертного уровня.
    Ответ написан
    Комментировать
  • Где найти материалы по генерации StackMapTable?

    @saharNooby Автор вопроса
    Ответ написан
    Комментировать
  • Как лучше в Java организовать интенсивную работу с сетью?

    @cthulhudx
    Лучшим выбором будет использование фреймворка Netty. Вот собственно статьи, в которых можно с ним ознакомиться:
    Высокопроизводительный NIO-сервер на Netty
    IoT cloud на Netty или 10к рек-сек на ядро
    Ответ написан
    1 комментарий
  • Почему приложения для Android пишут на джаве?

    gadfi
    @gadfi
    https://gamega.org
    ох вы сделали мой день ))
    не видел не одной нормальной программы на джаве.


    из детскопа продукты jetbrains, netbens и ряд утилит (первое что приходит в голову, должен признаться я не очень много пользуюсь детскопным софтом, даже офис в облоках, кто то другой назовет больше)
    из серверных одноклассники, твитер (хотя там вроде больше scala, но не суть)+ многие другие ресурсы к их множеству легко плюсуются вебприложения написанные на jvm языках

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


    Более классического ооп не встречал (c# и java в этом плане те же яйца, разница в сахаре/обратной совместимости), разрешите поинтересоваться вашим бэкграундом? вы с чем сравниваете ?

    Радует только, что скоро она подохнет на windows окончательно и бесповоротно — цитата из интернетов.


    ага, об этом едва ли не с рождения java говорят, но число вакансй только растет ─ не забываем что доля детскопного софта в принципе уменьшается, все в веб уходит

    Собсна почему многие люди ругают джаву из-за ее «громоздкости и тормознутости», но продолжается разработка на нем?


    громоздка не java, громоздка разработка на java для веб ─ такова плата за стабильность и прогнозируемость результата, это не свойства языка, язык просто позволяет реализовать все те патерны и технологии которые в совокупности и зовут java ee. Это энтерпрайз, проекты длятся годами, расширяются и перерастают в монстров )) Тот же c# в этом плане такой же комбайн, это не плохо это требование рынка

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


    Вполне секурно, но да ресурсоемко ─ и в плане человекочасов и в плане железа. Вполне приемлемая цена, всего лишь ценой памяти мы получаем скорость близкую к с++

    Впрочем что я хотел спросить: можно ли на андроид написать приложение на Си, или Python (на пайтоне слышал что можно, но почему-то встречаю только змейки).


    на с/с++ имеет смысл писать ресурсоемкие задачи ─ обработка видио, звука и тд, просто писать обычное приложение на с/с++ глупо, накладные расходы на вызов JNI могут быть выше чем если бы вы писали просто на java
    на питоне под android вообще мрак, вы работает с тем же sdk только ловити еще баги киви или чего то подобного
    кстати скорость работы python в вебе тоже сильно ниже скорсоcти работы java, но это не является проблемой )
    Ответ написан
    Комментировать
  • Почему переменные в анонимном классе потока не успевают инициализироваться?

    angry_cellophane
    @angry_cellophane
    Нельзя так просто взять и работать с одной переменной из нескольких потоков.
    Главный вопрос - какое значение прочитает операция read?
    Где узнать про это больше:
    1. Классика жанра - Java concurrency in practice. Brian Goetz.
    2. Прагматика Java memory model
    3. Что такое memory model.
    3. Сама Java memory model (не для слабонервных)
    4. Хороший пост на хабре
    5. ...
    6. PROFIT!

    PS: В CustomPlayer много проблем и не только с многопоточностью. Практические советы: не создавать потоки руками (смотреть ExecutorService - пул потоков), не оставлять пустые catch блоки (хотя бы в логгер записать ошибку), соблюдать java naming conventions, убрать дублирование кода, любить жизнь и не унывать.
    Ответ написан
    Комментировать
  • Какие ЯП не требуют кучу прикладнухи для устройства на работу?

    @AlexLIn
    Нету такого. Хотя ... в макдаке можно знать только как работает касса. Хотя и там придеться знать как нужно обращаться с покупателями ...
    Ответ написан
    2 комментария
  • Что значит расчитана на enterprise проекты (Java)?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    • Рассчитана на enterprise проекты значит - бюджеты на 100 CPU Core и 500 Gb RAM. У кого нет, на того не рассчитана.
    • Большой плюс Java в том, что enterprise разработчикам хорошо платят.
    Ответ написан
    Комментировать
  • Как в Java удалить крайний символ или строку, напечатанную на экране терминала?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Возможность есть, но она никак не связана с Java. Это можно сделать с помощью т.н. Escape-последовательностей, если они поддерживаются терминалом (если терминал работает в режиме эмуляции, например, VT-52 или VT-100). В таком режиме работает большинство терминалов в Linux.

    Удалить последнюю строку, выведенную с символом перевода каретки (когда после вывода строки курсор находится в позиции 1 следующей строки) можно, например, так:
    System.out.println("Hello world"); //Print the line
    
    System.out.print(String.format("\033[%dA",1)); // Move cursor up by 1 line
    System.out.print("\033[2K"); // Erase the line


    Полный список кодов можно найти, например, вот тут.
    upd:
    С помощью Escape-последовательностей можно делать намного больше: переключать цвета, позиционировать курсор, "стирать" части строки или весь экран, и т.д. и т.п. Для интенсивного использования ANSII, особенно под Виндой, може оказаться полезной Jansi.
    Ответ написан
    Комментировать
  • Что значит расчитана на enterprise проекты (Java)?

    @asd111
    На java:
    Odnoklassniki, Yandex - кроме поиска почти всё на Java, Mail.ru - так же, Youtube - Java, Amazon, ebay, Eldorado, Ozon, Google - многое на Java, Twitter - scala, но работает на JVM
    На java делают что то очень большое и то что будет работать не один год.
    На С сложно написать сайт. На java гораздо проще чем на С.
    Ответ написан
    4 комментария
  • Новые возможности java 8, использовать или нет?

    Можно начать с малого, если боитесь стримов. Скажем, такой фрагмент кода на Java7:

    Map<String, List<Item>> items = new HashMap<>();
    
    public void addItem(String key, Item item) {
      List<Item> list = items.get(key);
      if(list == null) {
        list = new ArrayList<>();
        items.put(key, list);
      }
      list.add(item);
    }


    Нечто подобное встречается очень часто. В Java 8 это выглядит так:
    Map<String, List<Item>> items = new HashMap<>();
    
    public void addItem(String key, Item item) {
      items.computeIfAbsent(key, k -> new ArrayList<>()).add(item);
    }


    Не только короче, но и быстрее, потому что ключ ищется один раз, а не два в случае вставки. Если же у вас ConcurrentMap, то правильный алгоритм вычисления несуществующего ключа, который бы минимально блокировал мэпку и при этом выполнялся не более одного раза, раньше написать было вообще нетривиально. А теперь так же, в одну строчку.
    Ответ написан
    Комментировать
  • Как прекратить выполнение thread'ов?

    Rulexec
    @Rulexec
    Метатеоретик теории типов
    Обычно не убивают потоки извне, ибо это может привести к неопределённым последствиям.

    Чтобы сделать что-то один раз из множества потоков, можно использовать, к примеру, атомарные булеаны.

    Создаём инстанс AtomicBoolean, ссылку на который имеют все эти потоки, который изначально будет false.

    Затем делаем CAS:

    // AtomicBoolean isDeleted;
    if (isDeleted.compareAndSet(false, true)) {
        deleteMessage();
    }


    compareAndSet принимает ожидаемое значение и если оно действительно такое — изменяет флаг на то что мы хотим и возвращает true, если мы угадали, иначе false. И делается это атомарно. Т.е. только один поток изменит переменную и получит true и вызовет deleteMessage.

    Но вообще, для этой задачи похоже вряд ли нужно действительно создавать потоки. Возможно вам нужна просто переменная, мол, «есть ли сейчас таймер, который вызовет deleteMessage», а так же Timer, который вызовет deleteMessage через какое-то время. Его и отменить можно, если что.
    Ответ написан
    2 комментария
  • Как написать свои методы добавления и удаления элемента в LinkedList?

    @Sk1talec
    Фанат Java, Android и компьютерного зрения :)
    Почему бы не подсмотреть в оригинал?)
    Реализация ListIterator итератора в Java со строки 823
    Конечно с непривычки тяжело смотреть исходники из JDK, но это полезный скилл, который в будущем пригодится.
    Ответ написан
    Комментировать
  • У JAVA есть будущее?

    @protven
    Нет у нее будущего, настоящего, да и прошлого нет. Учите Dart, Go, someshit.js и еще какую-нибудь хипстерскую фигню. Будет еще больший дефицит на рынке труда и профит для java-разработчиков.

    Какой десктоп ? Вы о чем вообще? Основная ниша для java - это server-side разработка крупных проектов для банков, телекомов и прочих серьезных дядек.
    Ответ написан
    4 комментария
  • Почему не вызывается метод?

    @IceJOKER
    Web/Android developer
    Что ему не нравится, он вам написал:
    cannot find symbol - variable menuBar
    Ответ написан
    Комментировать
  • Оптимизация Debian под Java, что и как нужно делать?

    @gurinderu
    java developer
    Оптимизация Java странная штука. Оптимизировать надо не Java под Debian(пусть этим занимается Oracle).
    Оптимизируйте именно сервер minecraft. А там есть что оптимизировать)
    Ответ написан
    2 комментария
  • Как сделать чтоб после нажатия кнопки, запрашивал у пользователя место сохранения файла?

    @Power
    Чтобы показать окно с выбором места сохранения файла, используйте JFileChooser.showSaveDialog.
    Ответ написан
    Комментировать
  • Чем занимаются Java программисты?

    bay73
    @bay73
    Неужели не хватило сил прочитать хотя бы статью на Вики, прежде чем сюда писать? Там и про J2SE и про J2EE написано. Там даже несколько крупных проектов, реализованных на Java указано.
    Ну а в отношении Android стоит отметить то, что в тройку самых популярных языков Java попала еще лет за 10 до появления первых Andriod-устройств. Так что популярность Java с Android практически не связана.
    Ответ написан
    Комментировать
  • Как запускать 10+ потоков в java без повторяемости кода?

    @FlaIDzeres
    Как мне кажется тут исчерпывающая информация, tutorials.jenkov.com/java-concurrency/thread-pools.html

    Либо по тупому тоже самое что делаете вы но в цикле.
    Ответ написан
    Комментировать