Ответы пользователя по тегу Java
  • Какую архитектуру клиент-серверного приложения вы посоветуете?

    @frozen_coder
    Java-developer
    Серверное приложение пишется обычно в виде DAO-Сервисы-Контроллеры. DAO - работает с БД, Сервисы - логика и запросы к DAO, Контроллеры - принимают запросы, отправляют ответы, вызывают сервисы. С клиентом общаться по REST. Чо на мобилке будете творить я не знаю, вообще не шарю чо там в мобилках. Мне нравится Spring, вы можете использовать что-то другое (Play, Java EE). Среда на ваш вкус. IDEA хороша. Сервер выбирайте сами - WildFly (я за него), Glashfish, Tomcat, Jetty и др. Как настроить - го в гугл. Там же почитаете про распределение нагрузки на несколько серверов.
    Lombok помогает на Java. Тестирование JUnit или Spoke Framework.
    Из БД можно Postgres, но сойдет и Mysql.
    Про ментора не знаю, мне хватает коллег по работе.
    Ответ написан
  • Какие проекты взять новичку в JAVA для самостоятельной реализации?

    @frozen_coder
    Java-developer
    В идеале нужно, что бы проект затрагивал разные важные моменты в языке: работа с сетью, базу данных, интерфейсные решения и прочее.

    Напишите файловый сервер с возможностью загрузки файлов через ftp-клиент, через web-морду, через SOAP, через мобильную приложуху с аутентификацией, базой юзеров, также можно в базе хранить какую-нибудь метоинформацию о файле. Например, может быть такой маленький личный фотоальбом с подписями(блог-постами, комментами etc.), фотки из которого доступно скачать и залить повсякому. Попробуете всё)
    Ответ написан
    Комментировать
  • Как наладить обмен сообщениями между пользователями сайта?

    @frozen_coder
    Java-developer
    XMPP как вариант.
    Ответ написан
    Комментировать
  • Как связать Java и web-интерфейс?

    @frozen_coder
    Java-developer
    REST
    Ответ написан
    Комментировать
  • JavaProject? SBT ^ Maven ^ Gradle?

    @frozen_coder
    Java-developer
    По большому счету как вам удобнее, какой стиль описания сборки вам больше нравится и более понятен и прозрачен. gradle вполне.
    Ответ написан
    Комментировать
  • В каком направлении двигаться со знанием Java Core?

    @frozen_coder
    Java-developer
    Везде есть как интересные, так и скучные задачи. Вам выбирать, на первых порах вам скучно не будет, в любом случае узнаете много нового, а потом уже можете пойти и искать другие задачи, места работы. Что-то слабо верится, что в СПБ мало вакансий и они все унылые. Можете расти как в ту, так и в другую сторону. Всё действительно зависит от ваших предпочтений и получаемого удовольствия. Вообще, далеко не везде спешат внедрять самое новое и это не зависит от языка и платформы - никто не хочет неоправданно рисковать переходом на новьё без особой на то выгоды. Я бы посоветовал в web. Может станете fullstack. Изучите клиентскую часть и, если уж так не понравится в Java-мире, потихоньку переплывете во front или js-мир. Уж его то прям колбасит от новых технологий, не соскучаетесь.)
    Ответ написан
    1 комментарий
  • Актуальная книга по паттернам проектирования для джависта?

    @frozen_coder
    Java-developer
    Читайте классику банды четырех - www.ozon.ru/context/detail/id/2457392 , а также гуглите лучше, на самом тостере подобных вопросов полно. В большинстве своем все новые паттерны основаны на старых, добрых и давно описанных, а также они не зависят от языка, ибо это проектное решение, концепция, идея, модель, а не реализация.
    Ответ написан
    Комментировать
  • Подходит ли Java для desktop и MS Office?

    @frozen_coder
    Java-developer
    Если писать на Java только ради самой Java, то да можно. Хотя за всякие ворды не знаю, но с excel я спокойно работал, используя Apache POI. Desktop-приложения на Java выигрывают, если Вам нужна кроссплатформенность. Если Вам нужен только windows, то лучшим выбором будет C# со своей платформой и Java будет скорее оверхед. Java старается охватить всё, что только можно, но иногда это не нужно и есть более заточенные под определенные цели инструменты. А к выбору инструмента (в данном случае языка и экосистемы) нужно подходить исходя из задачи и некоторых условий или ограничений.
    Ответ написан
    Комментировать
  • Как поступить с выбором среды разработки после года работы в C++ Builder?

    @frozen_coder
    Java-developer
    Visual Studio или CLion. Но почему вопрос с тегами Java и С# еще? Такое ощущение, что под сменой средой разработки Вы подразумевали нечто большее, чем смену IDE. Да и какой-такой болезненный переход может быть со сменой IDE?
    Ответ написан
    Комментировать
  • Java EE только для особо мозговитых?

    @frozen_coder
    Java-developer
    Цитируя Вас "это все бредни начинающего, и мне просто нужен хороший пинок под зад". Берите и начинайте делать. Нужно учится сразу на практике в любом языке и технологии. В начале можно прям с головой не лезть в чистый Java EE - почитать теорию, понять как это работает, посмотреть-повторить простые примеры. А потом берите либо Spring Boot, либо Play (лично с ним знаком мало) и пишите приложение на нём. По ходу вольётесь в экосистему. Будете искать ответы на вопросы и разбираться на практике. Да, это не совсем труЪ-путь, ибо вы, возможно, не будете до конца понимать как всё внутри и будете воспринимать многое как магию, но уже будете получать результат и видеть плоды трудов своих. Создав простенькое приложение, по ходу его усложнения вникайте глубже. В итоге, вы увидите, что большая часть кода, которого именно Вы написали обычная Java SE. Всё EE за Вас будет делать Spring, а Вы лишь направлять его в нужное Вам русло, иногда вставляя свои имплементации и конфиги. Не так страшен черт, как его малюют. Будет круто найти стажировку или работу. Там Вам еще и помогут, и задач учебно-боевых дадут, а потом и боевых.
    Да, знать и уметь надо чуть больше, чтобы начать писать Java Enterprise, чем web-приложухи на js, php. Но, имхо, мне лично доставляет больше удовольствие писать на Java, чем на js или других скриптовых языках. Да и потом, Вам всё равно придется js изучить - клиентскую же часть в Ваших учебных проектах не напишет же никто за Вас).
    Вам самому надо попробовать и понять, от какого языка Вы больше удовольствия получаете.
    Ответ написан
    Комментировать
  • Какие фрайимворки и библиотеки использовать жля написания сайта?

    @frozen_coder
    Java-developer
    Spring'овых фрейморков по большей части хватит за глаза + Hibernate as an JPA implementation. Используйте Spring Boot, Data, Security. Hibernate используйте как имплементацию JPA, аннотации оттуда, а запросы к базе через Spring Data интерфейсы-репозитории, что очень просто и удобно. Но, если понадобится очень сложный, нестандартный запрос и писать над методом в репозитории чистый SQL не хочется (если сейчас непонятно, то после чтения доков Spring Data станет ясно о чем речь), то можно будет такие запросы через Hibernat'овскую Criteria провернуть.
    Для уменьшения боллерплейт-кода очень удобен Lombok.
    По большей части всё уже есть в стандартных библиотеках самой Java. Используйте 8 версию с её stream'ами - красиво и удобно.
    А больше вроде ничего такого и не надо. Собирать удобно через gradle, но кому-то больше по душе maven.
    Дальше уже надо смотреть по специфическим потребностям в проекте.
    Напоследок про тестирование: JUnit для юнит-тестирования, но я таки советую овладеть groovy хотя бы немного и использовать spock framework, а для тестирования UI - Geb.
    Самое лучшее чтиво - официальная документация, а она очень хорошая как для Spring (даже на русском же есть), так и для Hibernate. Есть еще известный блог mkyong
    https://www.mkyong.com/ - у него примеров чуть ли не на все случаи жизни есть для Java и около.
    Из книг Spring in action, есть на русском, но не знаю как они сейчас поспевают ли за версиями, лучше оригинал, конечно.
    На тостере посмотрите уже было много вопросов по источникам, там много, например Какие ресурсы со статьями, туториалами и темами по изучению программирования, технологий, фреймворков вы знаете?
    На хабре тоже статьи имеются.
    Ответ написан
    Комментировать
  • Стоит изучать java с книги Герберта Шилдта "Java 8 полное руководство"?

    @frozen_coder
    Java-developer
    Лучше Хорстманн, Эккель и Блох, а Шилдта оставьте как справочник. Там много просто описания классов и их методов, а это и скучно, и не все пригодятся, и при современных IDE всё это помнить необязательно - главное знать в какую сторону искать.
    Ответ написан
  • List в java это связный список?

    @frozen_coder
    Java-developer
    java.util.List - интерфейс. Его реализация в виде связанного списка - LinkedList.
    Подробнее:
    https://habrahabr.ru/post/162017/
    https://habrahabr.ru/post/127864/
    https://habrahabr.ru/post/128269/
    https://habrahabr.ru/post/237043/
    Ответ написан
    Комментировать
  • Как самостоятельно написать мессенджер на Java?

    @frozen_coder
    Java-developer
    Как написал Igor Vorobiov - изучить сокеты. Как вариант - двигаться в сторону своей реализации протокола XMPP. Для начала можно взять готовый сервер и написать к нему клиент. Потом посмотреть как сделан сервер (Openfire на Java) и написать свой. А можно вообще круто завернуть и написать свой протокол.
    Ответ написан
    Комментировать
  • Можете посоветовать как быть дальше?

    @frozen_coder
    Java-developer
    "Хочу сделать основным Java" - очень расплывчато. Java - это инструмент для разных сфер: android, desktop, web. Я бы советовал в web - наиболее распространенная сфера; ванги говорят, что android-приложения уступят когда-нибудь своё место web. Ну это всё дело вкуса и чего ВЫ хотите. Итак, например, хотим в Java-web:
    1) А Вы уверены, что знаете Java? Может есть нюансы и маленькие пробелы? (пробежаться по Эккелю и Блоху, можно посмотреть статейки о подготовке к сертификации - много мелочей, неочевидностей раскрыто) Разобрать Java 8, особое внимание stream.
    2) Ок, Java SE знаете, а Java EE? Тут можно очень досконально не вникать на первых порах - фреймоворки нам помогут.
    3) Пошли Фреймворки и библиотеки - Семейство Spring: Core, MVC, Boot, Data, Security. Для ORM - Hibernate (можно вместе с Spring Data, можно вместо, посмотреть нужно). Для уменьшения болерплейта - Lombok.
    4) Для тестирования JUnit, потом посмотрите Spock Framework (тут мы знакомимся еще и с Groovy).
    5) Плавно переходим к клиенту. Тут нам Java становится мало. Вспоминаем html и css. Если не знаете JS - узнать. Дальше дело вкуса. Выбираем(пишем своё) библиотеку или модный фреймворк, изучаем пилим клиентскую часть. На этапе разбирательств с клиентом познакомиться(если вдруг чего не знали) с REST, http, https, http 2.0, webSockets, json, ajax что такое DTO.
    6) Для UI тестирования попробуйте Geb.
    7) WebServices! SOAP, Jaxb, SOAP MTOM.
    8) Можете попутно расширить кругозор по БД - попробовать вместо mysql postgres или NoSql базы.
    Вот это был примерный набор инструментов.
    Но главное - практика. Нужен свой учебный проект. Начинаете его делать - появляются проблемы - смотрите как такое можно решить существующими инструментами - тут же применяете теорию на практике.
    Предлагаю писать какой-нибудь корпоративный портал с каким-нибудь реестром, справочником и т.д. Включаем фантазию.
    Начните с малого - сам справочник-реестр с функциями CRUD - создать, прочитать, редактировать, удалить запись. Далее прикрутите систему прав и ролей пользователей(не все могут создавать, редактировать и тем более удалять). Добавьте работу с файлами - скачать, загрузить, экспорт в pdf и exel. Продолжайте накручивать своё приложение функционалом - личка и чат, доска объявлений, имитация отношений начальник - подчиненный (тайм-менеджмент, таск-менеджмент, сбор отчетов каких-нибудь по работе), уведомления (в почту, в системе, м.б. попробовать с смс), напишите другую маленькую систему и заобщайте их между собой по SOAP(например, другая система может читать из справочника и что-нибудь туда писать). Берите какое-нибудь гипотетическое предприятие (склад, магазин, автосервис, школа, больница, завод и т.д.) и представьте, что ему надо свой документооборот перевести в электронный вид и максимально автоматизировать бизнес-процессы.
    Короче, набирайтесь опыта и учитесь через практику, ставьте сами себе задачи и ищите пути их решения. Стажировка и работа вообще на первых порах дают мощный толчок в развитии. Не можете найти стажировку? Идите на собеседования, делайте тестовые задания - тут сразу все пробелы всплывут.
    Ответ написан
    3 комментария
  • Задачи по ООП на Java?

    @frozen_coder
    Java-developer
    По книгам - это классика Хорсманн, Эккель, Блох. Есть еще headfirst, но там всё как-то слишком по-детски разжевано с картинками, хотя кому-то так нагляднее. В остальном полностью поддерживаю evg_.
    Ответ написан
    Комментировать
  • Как научиться реализовывать алгоритмы?

    @frozen_coder
    Java-developer
    Читайте книги по алгоритмам, по чистоте кода (Чистый код Мартина как библия), изучайте чужой код - старших коллег и openSorce сообщества, практикуйтесь - реализуйте простые алгоритмы, у Мартина прочитайте что такое ката, возвращайтесь к своему коду и думайте как его улучшить. Довольно давно - это сколько? 10 тыс. часов программирования преодолели?
    Ответ написан
    Комментировать
  • Какие есть хорошие книги по java с уклоном в искусственный интеллект?

    @frozen_coder
    Java-developer
    Мне думается, что хорошие книги по Java и про искусственный интеллект - это разные книги. Не знаю за ИИ. За Java рекомендую классику - Эккель, Хорстманн, Блох, Шилдт как справочник. Если интересует именно Java, то овладейте ей как языком программирования, потом ищите книги по ИИ(с большой долей вероятности в ней могут оказаться примеры не на Java) и уже на Java реализуйте описанные в них идеи, алгоритмы, примеры и свои программы с ИИ.
    Про книги об ИИ был уже вопрос на тостере. Гуглите лучше.
    Что почитать об искусственном интеллекте?
    К ключевым словам поиска можете добавить машинное обучение, глубокое обучение (deep learning), нейронные сети.
    Ответ написан
    Комментировать
  • В какой книге по java есть нормальное объяснение классов и методов пакета java.lang?

    @frozen_coder
    Java-developer
    Попробуйте Эккеля или Хорстманна. Это типо тоже классика.
    Ответ написан