Ответы пользователя по тегу Java
  • Есть ли сервисы для компиляции java в облаке?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Cloud9. Другой вариант арендовать самый душманский сервер, на нем развернуть яву. А дальше дело техники в виде написания скриптов для удаленной компиляции и запуска либо подцепить удаленно по sshfs папку оттуда и работать в ней + рядом открытый терминал либо вообще ставить на удаленке иксы, туда же ide и работать по ssh+Xforward.
    Ответ написан
    Комментировать
  • C++ или Java для игр и различных приложений?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    На С++ писать сложнее чем на джаве. Наговнокодить можно на любом языке и будет очень медленно и прожорливо, по потреблению ресурсов впринципе потеряете не так много если сравнивать java vs c++, если конечно не будете в рекурсивном цикле создавать миллиарды строк текста.
    В любом случае, как писали выше, язык это дело вкуса и серебрянной пули несуществует вообще. Игры можно писать на готовых движках. Скажем если выбор падет на юнити то тут балом правит C# и JS. Если выберете Unreal то С++ или скриптовый блюпринт. Если же выберете путь писать двиг самому особенно для мобилок то тут будет адская смесь явы и с++. Если возьмете некий "полудвижек" или фреймворк то там вас привяжут к конкретному языку или скриптовому языку. Кроме того на каждой платформу правят свои языки и кроме того их может быть много. На андроиде это java и намного реже с++(в основном гемор из за невероятного числа костылей) или примеси html5. На IOS это objective-c и swift и так же иногда с костылями html5. На Windows С++\С\С# и реже все остальное, на маках objective-c в основном, на линуксах С++\С\Mono\Java\Python\Perl\Lua\NodeJS\Go и еще туча другого добра. Если же пишут многопользовательскую игру то сервера очень часто пишут на питоне\го\джаве\ноде.
    В общем если желаете нацелиться на максимально возможное с минимальными затратами то начинайте учить джаву или с#(эти языки очень похожи и выучить другой будет легко) а дальше берите фреймворк или готовый двиг и творите. Задумывать о том что тот язык медленный\прожорливый\etc Вам не имеет смысла вообще никакого т.к. абсолютно все языки примерно одинаковы по скорости если их "хорошо готовить" и основная разница только в следующем:
    1) Сложность синтаксиса языка.
    2) Скорость изучения языка.
    3) Сложность изучения языка и его принципов.
    4) Скорость написать программы.
    Обобщенный пример: Java или C# очень простые языки и можно уже через пару недель писать довольно серьезные программы но они будут медлительны по одной простой причине, для того чтобы понимать что вот это медленно и надо писать по другому пройдет очень много времени и стажа т.к. многие моменты коварно абстрагированы в недрах VM. Ситуация с С\С++ другая, языки в 10ки раз сложнее особенно новичку, для написать сколь нибудь сложной софтинки придется усиленно изучать язык пол года и больше но за счет необходимости читать и понимать и большего времени изучения у вас изначально код будет быстрее просто потому что уже будет хоть небольшое но понимание почему так медленнее а так быстрее и почему так ресурсов кушается больше а так меньше. То же самое относится и к переносимости языка на другие платформы, джава сильно абстрагирует api от железа и OS и программист просто пишет 1 код и он просто работает везде где есть джава. На С++ огромное число граблей при переносе софтины с win на линуксы и наоборот, почти весь код который как то работает с OS или железом придется переписывать заново. Ну и про скорость написания софта, java\c# сильно впереди, чужой код в сотни раз проще понять чем чужой код на с\с++, программист думает именно над алгоритмом исключая думы над тонкостями работы с памятью и т.д.
    Выбор полностью за вами =D.
    Ответ написан
    Комментировать
  • Есть простой способ создания мультиплатформенного gui-приложения на Java?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Есть такая штука штатная Native Package называется, собирает софтину с зависимостями и рантаймом в кучу.
    «Write Once, Run Anywhere» относится не совсем так как вы поняли, это означает что написав код единожды его можно без изменений\перекомпиляции запустить где угодно где установлен рантайм явы. Т.е. рантайм берет на себя все сложности и тонкости работы с с железом\операционкой\файлами а вам как программисту предоставляет единый интерфейс для этого. Т.е. установленный рантайм как минимум нужен на целевой машине или эе это будет native package билд под под платформы mac\linux\win.
    Ответ написан
  • Какие вы используете JAVA библиотеки для работы с excel файлами?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Выбор то не такой и большой, попробуй docx4j, если совсем край то jni и Open XML SDK.
    Ответ написан
    Комментировать
  • Какой язык будет лучше для производства бизнес-приложений?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Java,ибо из коробки win+mac+linux+android, для трансляции java кода приложения андроида в objectC ios есть тулза от гугла j2objc. Хоть и не избавит от крови но прольется ее намного меньше =)
    Ответ написан
  • Как обрезать строку в Java?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Читай что в эксепшене и исправляй либо обрабатывай это исключение.
    Ответ написан
  • Существует ли реализация J2ME для Java SE\С++?

    jamakasi666
    @jamakasi666 Автор вопроса, куратор тега Java
    Просто IT'шник.
    Репозиторий microemulator на гитхабе, гуглокод немного уже не в тренде и не так удобен. Покопался в нем это именно то что надо, чистенькая реализация CLDC и MIDP на обычной java se, еще и портирован на все что можно.
    Ответ написан
    Комментировать
  • Нужен ли JavaFX?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Много сталкивался с разными гуями. Конкретно на jav'e в основном используют awt\swing . Софта десктопного немало есть, тот же openoffice.
    Конкретно JavaFX для написания софта годится тоже очень хорошо но еще лучше для написания гибридного софта(этакое веб приложение с нативным функционалом, в пример тот же стим). Т.е. используются javafx формы совместно с webview. При этом отображается некий кусок страницы к примеру чат\список игр и прямо в коде страницы впендюрины кнопки которые дергают нативный функционал уже не веба а конкретно этой машины(игру там запустить или добавить игру во вкладку формы где список игр и т.д.). Поэтому Java и JavaFX вполне себе заслуживают место под солнцем но надо понимать что для каждой задачи больше подходит совй язык. Если вы хотите писать игру то тут однозначно с++\mono , если же софтина будет корпоративного уровня и важна масштабируемость и расширяемость то java\c#, если что то для себя или просто забавы ради то выбор не принципиален вообще.
    Ответ написан
    5 комментариев
  • Откуда в пустом java приложении 23500 объектов тип char[]?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    А если скомпилировать без debug символов?
    Ответ написан
  • Какую систему сборки использовать?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Написать скрипт который будет выкачивать свежую версию зависимости и запускать компиляцию?)
    Ответ написан
  • Сброс всех аттрибутов статичного класса на null?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Null это вообще плохо. Зачем Вам нужен статичный класс если всеравно будете изменять переменные в нем, может лучше посмотреть в сторону синглтонов? Зачем вообще сбрасывать в null переменные?
    Напишите лучше конкретное место и задачу с которой столкнулись так будет намного проще сказать как лучше решить проблему.
    Я так предполагаю что вам подойдет такой вариант:
    public class Test{
        public static Test instance;
        public Long attr1 = null;
        public String attr2= null;
        public Double attr3= null;
        public Long attr4= null;
        private Test(){}
        public static synchronized Test getInstance(Boolean clear){
           if(instance==null || clear==true) instance = new Test();
           return instance;
        }
      }
    Ответ написан
    9 комментариев
  • Как работать с NIO?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Очень обширный вопрос и ответ такого объема врядли найдете.
    Могу только предложить такой вариант. Попробуйте написать свой чат постепенно его усложняя.
    Для примера. Есть некий класс user в котором есть поля ip_addres\username.
    Есть некий абстрактный класс packet в нем есть поля pack_num, byte_data. Так же есть наследник pack_message у которого есть новое поле message. И pack_auth с полем username.
    pack_num = уникальный номер пакета чтобы понимать во что надо сериализовать или десериализовать.
    byte_data = байтовое представление содержимого пакета.
    Дальше пишете(или берете сниппет) сервера\клиента. Сервер ждет данные, клиент присылает пакет pack_auth со своим username, сервер создает поток и экземпляр user в которой вносит полученные данные. Дальше клиент и сервер могут меняться такими своими пакетами pack_message.
    Когда наиграетесь то усложняйте задачу, введите новый тип пакета бродкаст, комнаты, оповещение о доставке сообщения, состояние пользователей и т.д. постоянно усложняя задачу. В конечном счете будете понимать как это все работает а в частности сможете брать новую тему с челенджем для себя и реализовывать ее.
    Я лично только после такого смог более или менее разобраться с nio, а чат просто потому что это не так сложно, интересно и охватывает очень многие темы работы с nio. Еще кстати заодно и заюзал eventbus из либы guava для событийно ориентированного кода а позже написал свою версию библиотеки для событий и наживую вкинул в чат.
    Ответ написан
    1 комментарий
  • Почему нет методов у потомков?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Напиши @Override в потомках над методами которые переопределяешь. Для видимости метода которого нет в родителе нужно приводить тип типа
    Line f1 = (Line) f.get(1); f1.move();
    Ответ написан
  • Как сделать цепочки в наследующих классах java?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Не сталкивался с подобными задачами как и никогда не использовал цепочки. Я конечно далекий от таких тонкостей и проблем как в вашем случае но может стоит попытаться написать серебряную пулю через аннотация\рефлексии?
    Ответ написан
    Комментировать
  • Java почему вылетает java.lang.NullPointerException?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    mass не инициализирован. Вообще лучше используй коллекции =D
    List<Integer> mass;
    
                void sayLen(){
                    if (mass == null) {
                        System.out.println("0");
                    } else {
                        int len = this.mass.size();
                        System.out.println(len);
                    }
                }
                void addToMass(int e){
                    if (mass == null) {
                        mass = new ArrayList<>();
                        this.mass.add(e);
                    } else {
                        this.mass.add(e);
                    }
    
                }
    
            }
    Ответ написан
    1 комментарий
  • Какие эксэпшены использовать?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Если класс не делает ничего критически важного в программе то можно и нужно обрабатывать все исключения внутри этого класса. Если же класс выполняет какие то критические действия то вероятнее всего обрабатывать исклюения внутри класса может быть очень опасно и лучше их ловить уровнем выше.
    Не критичный пример: класс рисует картинку на экран, если пара пикселей будет каким либо образом при обработке null и ты перехватишь это исключение заменив ошибочный пиксель белым то ничего криминального не случится. А вот если ты будешь ловить исключение уровнем выше то будет много лишнего гемороя и кода.
    Критичный пример: класс работает с базой данных в который хранятся данные о людях, происходит ошибка, скажем, с доступом к бд, ты поймал исключения внутри самого класса и вместо того чтобы вернуть, например, "Иванова А.П.", у тебя случилось исключение и ты вместо того чтобы выкинуть исключение вверх прикидываешься шлангом и возвращаешь что таких нет. Код где то дальше видя что все нормально и "Иванова А.П." нет в базе спокойно создает там нового(соединение с бд могло восстановиться к этому моменту) вместо того чтобы обновить запись. Т.е. в такой ситуации обрабатывать исключения внутри класса просто неправильно в большинстве случаев т.к. железо бетонно его надо обрабатывать выше и в случае ошибки обращения к бд отвалиться и пробовать все снова.
    Ответ написан
    Комментировать
  • Есть ли простейшая библиотека на Java для БД?

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

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Это было бы слишком хорошо. Или писать самому или пробовать подключать onlyoffice или гуглодоки. Но в любом случае легкого варианта не будет и наверное проще написать свой вариант интерфейса с минимумом необходимого функционала взяв за основу docx4j.
    Ответ написан
    Комментировать
  • Есть ли апи едитор для вордовских доков который можно встроить в веб приложение?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Пользовался в дикой молодости www.docx4java.org/trac/docx4j
    Даже остался институтский проект который какраз делает то что вы сейчас делаете https://github.com/Jamakasi/ServletDocumentWorker
    За код не пинать, был студентом и только изучал jav'у.
    Ответ написан