Энтерпрайз в Java
День добрый всем!
Вот много пишут/говорят, мол в энтерпрайзе есть тяжёлое наследие в виде старых технологий, фреймворков и т.д. И я тут стесняюсь спросить у сообщества: а какие собственно технологии/фреймворки считать устаревшими и не заострять на них обучение?
Допустим для генерации веб-страничек есть JSP, JSF, Facelets и сервлеты всякие.
ORM: там персистенс, хибернейт.
Возьмём серверы — так там Tomcat, JBoss, GlassFish.
А ещё для «оживления» интерфейса активно используют Ajax,JS.
Spring — это вообще отдельная тема.
Вот мне бы кто подсказал, "так сказать, в общих чертах«©, на что не следует обращать внимание, на что сделать основной упор, а что просто на уровне понимания как_оно_работает и для_чего_нужно.
Я себе придумал проэктик и прикручивал бы к нему потихоньку разные фичи, параллельно разбираясь в них.
Просто я сейчас хочу сменить «поле деятельности» и случайно получилось заняться Джавой, а там всяких технологий, как бутылок в хорошем баре. В Core Java я более-менее разобрался что к чему, немного попробовал Swing, JDBC, дабы понимать как он работает.
Теперь надо уже копать дальше.
51 коментар
Додати коментар Підписатись на коментаріВідписатись від коментарівУ меня примерно такая же ситуация, как у автора. Очень полезная тема. Спасибо всем, кто отвечает. Сейчас штудирую книгу Head First Servlets and JSP после учебника по Core Java. На очереди — книги по Spring.
hewgill.com/...tags/#!java c+
JavaEE, если ты понимаешь что это такое, — рулит. Jboss последних версий у меня загружается за 6 секунд, куда быстрее чем Tomcat + Spring. Хотя, конечно JSF многим, и мне, не нравиться, но ему есть альтернатива, — JAX-RS + JS клиент. Честно говоря, проекты на Spring + Hibernate превращаются в говнину очень быстро, в то время как проекты на EJB + JSF/JAX-RS + JMS показывают хорошую масштабируемость и легкость в поддержке. JavaEE предоставляет полный стек технологий, в то время как в проекте на спринге у тебя будет солянка из кучи забагованный опенсорсных проектов.
ejb entity beans?
Хотя почитал, они депрекейтнули entity, терь юзается jpa.
Подразумевалось, что JPA, пусть он и вынесен в отдельную спеку.
через JPA EntityManager в EJB.Внутри того же JBoss AS — JPA vendor Hibernate.
Это, конечно, здорово, когда можно выбирать себе пиво в баре)). Но у меня (почему-то) складывается впечатление, что в основном имеет место поддержка старого «legacy» кода, с использованием инструментов, которые ныне уже практически не поддерживаются. И приходится работать с тем, с чем нужно, а не с тем, с чем хочется. Как-то так.
Легаси имеет место быть, однако ты же не хочешь постоянно сидеть на саппорте странных систем написанных индусами в начале нулевых.
в энтерпрайз проектах НЕ используют инструмент, который уже не поддерживается — это правило № 1 (слишком рискованно для бизнеса). больше подошло бы слово «немодные».
внутри JBossAS используется tomcat как default servlet container.
вообще-то хорошо масштабируется и проект spring+hibernate внутри JBoss AS,используя JBoss OpenShift.Другое дело, что использовать spring c JBoss AS — извращение.
А Вы шарите!7-8 секунд.
Дело не в самом томкате, а в том что jboss, включая и сам jboss as, это очень зрелый технологический стек. Кластеризация? Пожалуйста. Балансировщик нагрузки? Нет проблем. Плюс, Jboss построен на OSGI и причем очень грамотно, если что-то не нужно, то jar-ки и не загружаются. В результате деплой происходит, в среднем, за
спасибо, я не шарю — просто это использовалось.
небольшое замечание об OSGI — JBoss As как OSGI контейнер не лучше всех поддерживает Spring, лучше уж Eclipse Virgo.
А зачем на полноценном аппликейшон сервере Spring?
я не знаю, что для вас полноценный аппликейшон сервер.
Вы не знаете разницы между сервлет контейнером и аппликейшон сервером?
Коментар порушує правила спільноти і видалений модераторами.
Коментар порушує правила спільноти і видалений модераторами.
Разберитесь немного с вебом (аджаксы, джаваскрипты), с БД (знать что такое джоин и хевинг), свинг особо не надо.
Фишка в том что на каждом проекте они могут быть разные и учить тот же ДжСФ смысла нима если не уверены что он будет в проекте.
За напутствие пасип)). Как и где работу найти — я конечно же разберусь, тем более, что сейчас работаю и фин.вопрос не главный в этом деле, да и прийти хочется подготовленным. Просто довольно давно заинтересовался программированием и решился заняться им профессионально. А JS и AJAX это получается фронтэнд? Если да, то во что лучше повникать из бэкэнда(1-2 инструмента)?
P.S. Spring+Hibernate не предлагать, т.к. на данном этапе для меня этот челлендж слишком крут)
Сервлеты, ДжДБЦ, ДжСП. И искать работу! На работе вы значительно быстрее выучите Хибернейты/Спринги и тд.
в существующем проекте все эти JEE и спринг/хибернейты уже засетаплены и настроены каким-нибудь крутым перцем, и собственно, вся работа с ними будет заключаться в редком редактировании xml или копи-пасту-редактированию сущностей по аналогии с уже имеющимся. посему, не стоит бояться
upd. с фронт-эндом (JS/Ajax) такие же яйца
В JavaEE проекте не нужно никаких xml’ей городить, ну кроме web.xml или persistence.xml, но это вообще мелочи. Это в спринге ты будешь XML девелопером.
это в _идеальном_ JEE проекте... а в IBM WCS, к примеру, есть еще и старый добрый struts + свой entity-фреймворк (помимо JPA) + access policies + Solr... гдеxml-я не просто много, а дохрена
Ты не понимаешь что такое JavaEE, это вообще-то спецификация. Вебсфера это не JavaEE, Tomcat + Spring + Hibernate тоже.
забавно, но почему-то Oracle называет JavaEE платформой (не спецификацией), мало того, еще и относит WebSphere App Server к Java EE 6 Full Platform Compatible Implementations
www.oracle.com/...jsp-136984.html
Маркетинг.
А как надо?
Я ни в коем случае не призываю вешать ярлык «устаревшие», но я бы поменьше использовал JSF если есть возможность, и я бы рекомендовал следующую связку.
Java EE: Web Profile + JAX-RS + static HTML + Knockout/AngularJS
Spring: Spring MVC REST + static HTML + Knockout/AngularJS
Причем с Java EE нужно использовать последние сервера: Wildfly, Glassfish 4. Они поддерживают Java EE 7, вебсокеты.
Особенно крут JBoss, который нынче Wildfly, в нем вообще ничего не загружается что не используешь. Нет у тебя persistence.xml — Hibernate не загрузится, и т.д. Даже само понятие Java EE Web Profile теряет смысл, так как то что не используется — не загружается. Для параноиков в xml файле конфига JBoss можно выкинуть нужные модули соорудить себе на коленке самодельный Profile еще легче Web Profile. Для большинства приложение вообщем может остаться Resteasy JAX-RS+Weld CDI+сервер Netty+пара мелочей. Чаще всего получается намного легче чем Spring/Jetty
Если вы новичек в Java, то обратите внимание что я советую не мейнстрим, на большинстве работ вас таки заставят использовать Tomcat+Spring+Hibernate и что-то наподобии GWT, JSF или JSP.
Спасибо. Я как раз так примерно и представлял, что в основном (по крайней мере сначала) надо будет как следует поработать с JSF/JSP+GWT. Со Spring’ом будет уже посложнее.
Большинство Java проектов все же будут требовать от вас разрабатывать сервисы и службы, а не UI. Потому лучше начните именно cо основных частей Spring, а потом уже Spring MVC, JSP, JSF
Изучи Apache Camel, это реально сила. Никакой ESB не сравниться с ним.
А продукты будущего JavaScript everywhere
Так как Вы бизнес логику собрались в js засунуть, расскажите, пожалуста
Бизнес логика UI
c фразой «из java просто сделать интерфейс для связи с базой данной» не вяжется.
Да, будет еще «бизнес-логика» бизнес-логика. Но в большинстве приложений при переносе логики UI в JS, код на Java очень упрощается. И round-trip’ов меньше
Но всё равно, проверки на валидность операций, и собственно выполнение операций остаются. Так что UI отдельно, бизнес логика отдельно.
И да, не возникает проблем с «размазаностью» логики с таким подходом?
Обычно с таким подходом и сам UI меняется. Пользователь делает достаточно много, редактирует формы, клацает по окнам и лишь изредка идет запрос на сервер. Много информации даже загружается одним здоровенным JSONом. Размер не так важен, как количество запросов. А тут их мало
Отлично, вопросов нет. Но ведь это ни разу не бизнес логика. Это просто интерфейс. Толстый клиент, если хотите.
бизнес-логика — это реализация правил и ограничений автоматизируемых операций (wiki). Боюсь что UI ничего ограничить не может, либо же эти ограничения должны обязательно дублироваться на сервере.
скоріше варто вибрати технології на які обовязково потрібно звернути увагу
Так ось і пробую вибрати))
Spring, jsp, jdbc, hibernate, трошки javascript і тебе беруть майже на всі проекти)))
Дякую за конкретні ідеї)) Вже реальні напрямки вимальовуються.
хер там, у меня вот такой же набор знаний... работу на джуна найти очень не просто
+ jQuery, SQL