Ответы пользователя по тегу Веб-разработка
  • С чего начать изучение Java для web?

    jaxtr
    @jaxtr
    JavaEE/Spring-разработчик
    Я бы рекомендовал начинать изучение веб-разработки на Java c изучения Spring и ознакомления с основными компонентами Java EE. Ради интереса в дальнейшем можно более подробно ознакомиться с Java EE (ибо Spring и его компоненты сопряжены с Java EE), но за последние годы пути Java EE и Spring разошлись (особенно в плане веба). Плюс сейчас есть проект Spring Boot, который упрощает процесс погружения в Spring.

    Про Java EE скажу, что изучать есть смысл только JPA, т.к. оно активно используется в Spring Data JPA; технологии, связанные с вебом - JSP и JSF, нынче не актуальны, JSP заменяется более вменяемыми библиотеками шаблонирования вроде Thymeleaf и Freemarker, а JSF заменяется самим Spring MVC.

    Насчёт контейнеров: Tomcat (а так же Jetty и Undertow) - веб-контейнер, который поддерживает только Java EE Web Profile, в то время как Glassfish (а так же Payara, Wildfly и JBoss) поддерживает весь стек Java EE, который нужен не всегда.
    uuPbl.jpg

    Мой совет - учи Spring, а Java EE оставь на досуг.
    Ответ написан
    1 комментарий
  • Какой Java-стек выбрать для рекомендательного сервиса?

    jaxtr
    @jaxtr
    JavaEE/Spring-разработчик
    1. Spring
    2. Jsoup
    3. Spring (для этого есть RestTemplate) или Apache CXF
    4. Дата - Joda Time, отчёты - Japer Reports или BIRT
    5. Spring for Android


    А так же полезными для обработки данных могут оказаться Spring Integration, Spring Batch и Apache Camel. Спасибо Сергей Горностаев за подсказку
    Ответ написан
    2 комментария
  • Чем заменить GWT?

    jaxtr
    @jaxtr
    JavaEE/Spring-разработчик
    Если нужно перевести что-то с GWT с наименьшими потерями, то один из лучших вариантов - Vaadin, который основан на GWT.

    Если есть желание переписывать Java-бекенд на Java EE, тогда можно использовать JSF совместно с RichFaces/PrimeFaces, либо Rest-сервисы Spring/Jersey и фронтенд на любом JS-фреймворке (хоть Angular, хоть ExtJS)
    Ответ написан
    Комментировать
  • Как организовать nonstate-микросервисную архитектуру?

    jaxtr
    @jaxtr
    JavaEE/Spring-разработчик
    Для реализации твоей идеи идеально подходит связка Spring Cloud + Netflix. Советую посмотреть документацию и этот подкаст.
    Ответ написан
    Комментировать
  • Как реализовать видео трансляции?

    jaxtr
    @jaxtr
    JavaEE/Spring-разработчик
    В своё время писал что-то подобное на основе Netty, использовал протокол RTSP и сопряжённые с ним (RTP, RTCP). В целом задача несложная, если жать медиапоток на стороне автора: получил фрейм, отдал всем подписчикам; но если требуется жать медиапоток на стороне сервера или хранить видео в каком-нибудь "неживом" формате, то на сервере нужно ещё писать обработку потока, что уже сложнее.
    Принцип достаточно прост, нужно реализовать две связи:
    1. Автор -> сервер, где автор передаёт данные серверу через протокол. Полученные данные можно хранить в сыром формате, что бы потом склеивать данные потока в файл обычного формата.
    2. Сервер -> подписчики. Тут задачка усложняется выбором протокола. Если используются клиенты вроде VLC, то можно использовать тот же RTSP, если видео встраивается в флеш-плеер, то удобнее RTMP, а если есть желание использовать встроенный в браузер плеер, то это уже HLS или MPEG-DASH. Самая проблема - писать переход между протоколами.
    Ответ написан
    Комментировать
  • Как перейти на JAVA после PHP?

    jaxtr
    @jaxtr
    JavaEE/Spring-разработчик
    Для начала прочитай Изучаем Java (К. Сьерра, Б. Бейтс), хотя можно начать и с книг Хорстмана. Ещё попутно рекомендую прочитать Объектно-ориентированный анализ и проектирование. Одновременно или сразу после этого можно пройти курс на JavaRush (или другом каком-нибудь аналогичном ресурсе). После этого можно браться за изучение Spring и Java EE попутно добивая пробелы в знаниях SE книгами Java 8 полное руководство (Г. Шилдт) и Язык программирования Java SE 8. Подробное описание (Дж. Гослинг). Остальное - дело практики.
    Ответ написан
  • Каков минимальный набор инструментов JAVA для работы с REST API сервисом?

    jaxtr
    @jaxtr
    JavaEE/Spring-разработчик
    Возможно ли обойтись без контроллеров?

    Можно, но с ними проще и правильнее. И вообще, какие аргументы против?

    Какие библиотеки следует использовать?

    Java EE (Jersey например) или Spring Web

    Как это реализовать максимально просто?
    На Spring:
    @RestController
    @RequestMapping("/books")
    public class BooksService {
        @Autowired
        private BooksRepository booksRepository;
    
        /**
         *  Список книг
         */
        @RequestMapping
        public ResponseEntity list() {
            return ResponseEntity.ok(booksRepository.findAll());
        }
    
        /**
         *  Добавление новой книги
         */
        @RequestMapping(method = RequestMethod.POST)
        public ResponseEntity create(@RequestBody Book book) {
            return ResponseEntity.ok(booksRepository.save(book));
        }
    
        /**
         *  Получение существующей книги
         */
        @RequestMapping("/{id}")
        public ResponseEntity get(@PathVariable String id) {
            if (bookRepository.exists(id)) {
                return ResponseEntity.ok(booksRepository.save(book));
            }
    
            return ResponseEntity.notFound().build();
        }
    }


    В данном случае используется ещё Spring Data JPA.
    Ответ написан
    Комментировать
  • Разработка: что должно быть впереди фронтэнд или бекенд?

    jaxtr
    @jaxtr
    JavaEE/Spring-разработчик
    ИМХО, при разработке бекенд и фронтенд не должны зависеть друг от друга. Если используется итеративный подход к разработке, то перед началом очередной итерации проводится всеобщая планёрка, на которой обсуждается, что и как должно быть реализовано в рамках итерации. Результатом должен быть некий протокол, который согласует действия фронтенд-разработчиков и бекенд-разработчиков. Информации в протоколе должно быть достаточно для того, чтобы не возникало вопросов на тему "Что, как и с чем должно взаимодействовать". Например, при разработке веб-приложения, где есть набор Rest-сервисов и HTML/JS-фронтенд, должны оговариваться эндпоинты сервисов, их возможное поведение, включая HTTP-коды, описание классов сущностей, и т.д.
    И тут да, фронтенд и бекенд разрабатываются на основе фейковых данных. Если всё организовано правильно, такой подход не будет давать осечек.
    Ответ написан
    Комментировать