Compare JAVA framework. (<< назад)
На всех публичных площаках ведутся споры JAVA-программистов - какой из фреймоврков лучше - вот пример такого спора на stackoverflow - мнения разделились аж на 30 направлений!
Если вас интересует эта тема (так же как и меня в данный момент - ибо я только учусь работать в среде JAVA) , то начните с чтения этого документа - Comparing Web Frameworks JSF, Spring MVC, Stripes, Struts 2, Tapestry and Wicket, посмотрите многочисленные споры программистов
А ниже пример еще одного такого же спора JAVA-программистов на ту же тему. И мнения опять разделились на 30 направлений. Для удобства понимания сути спора - я удалил все эмоциональные наезды программистов друг на друга и оставил только смысловые позиции каждого.
- Для новичка все эти "Хеллоу ворлды" с винегретом технологий вообще не подходят, ибо банально мозг перегружается. Надо последовательно изучать, начиная с основ.
1) Сначала сделайте Хеллоу ворлд на голых сервлетах / JSP
2) Потом на Hibernate/JPA
3) Потом на Spring или EJB
4) Потом добавьте JSF или SpringMVC
5) Потом начинайте постепенно скрещивать это все
ну и т.д.
Если же идти "винегретным" путем, то на выходе получается спец, который вроде бы может что-то сделать, но любой проблеме тут же валится и бежит к старшему коллеге за помощью - основ то не знает ничерта! И гугл ему не поможет, ибо не знаешь основ - не знаешь, что спрашивать у гугла. - Если нужна скорость доступа к данным, оптимизированные запросы- iBatis. JPA- в топку
J2EE- Server. Многое доступно на простом Tomcate - Если делать для себя:
Backend: Spring + iBatis + Tomcat + DB (Oracle /Postgre)
Frontend: Можно в принципе JSF- Primefaces- довольно легко писать странички - Заказчик и деньги заказчика - ему можно такое приподнести - что без того, того не обойтись. И денюжку сдирать. Какая разница под что писать. JPA облегчает маппинг, но там над перформанц надо много смотрет- трейсы лучше включит- и хинты добавлять. EJB - как технология- смысла в ней нет . При помощи Spring @Transactional- убираем прослойку EJB. кстати, недавно делал refactoring EJB on GlassFish -> to Spring on Tomcat - вообще без проблем. Облегченная версия.
- Мавен- без него никак. Неохота в ручную либы добавлять. Вспомнил свои проекты под анты- ухх...Особенно, xerses- добавить exclusions. Кто имел дело- поймет.
- Мой выбор: Spring + iBatis + Tomcat + DB (Oracle /Postgre) + Primefaces + SVN (немного традиционно)
- В зависимости от задач проекта выбирается та или иная технология,
мне например удобней через JPA работать, потому что есть на то причины,
во первых база данных mysql ,без транзакций и foreign key, куча таблиц справочников,
которые надо использовать при получении данных как из этой базы, так из баз на других серверах,
при этом часть из них имеют иерархичную структуру данных, но справочники типовые,
поэтому использую JPA, многие справочники объединяю в классы, создаю сеансы доступа к этим ентити,
к которым можно делать типовые запросы, поля ведь в ентити я могу хоть как описать,
и в итоге получается красивая система, все объекты объеденены родительскими классами, каждый объект
иерархии сам поднимает своих родителей, деток вообщем наливай да пей.
С ужасом вспоминаю дни когда приходилось для отображения простого отчета, делать кучу соединений,
писать запросы, а если вдруг надо еще и иерархию поднять...
Хотя если надо построить сложный запрос, с какими нибудь хитрыми условиями то тут конечно SQL.
CRUD мне проще через JPA делать, потому что проще вот и все.
Заметьте Spring и Hibernate не знаю, хотя почему некоторые считают это первоочередными знаниями, чтобы программировать J2EE
Только JSF и EclipseLink, уж так получилось - технология популярна может быть по 100500 разным причинам
например EJB1 и EJB2 - не сказать, что непопулярны, чуть менее чем дофига проектов было на них сделано в начале 2000х годов, я сам грешен
но это не значит, что везде, где применялись EJB1 и EJB2, был _смысл_ их применять - популярность двигалась иными причинами
то же самое и с hibernate и другими ORM - "если держишь в руках молоток, всё становится похожим на гвозди" - Ну скажите на милость, зачем мне нужны все эти DAO, JdbcTemplate и куча анонимных классов, когда я просто могу выполнить 1 (один) запрос в базу по нужному мне критерию, и получить все проекты.
А далее (при необходимости) сериализовать их в какой-нить Listи передать дальше.
DAO нужен для выноса логики доступа к данным из кода бизнес-логики. БЛ вообще пофигу что крутится под ней РСУБД, распределенная БД вида ключ-значение или внешний WebService. - С нхибернейтом не мучились раньше, не мучаются и сейчас. Его просто никто не использует.
Да, зато используют встроенный ORM EntityFramework.
Вы удивитесь, но все подходы к построению Ынтерпрайз приложений в .Net совершенно идентичны подходам в JavaEE.
1) Там то же повсеместно используют DI
2) ASP.NET принципиально полный аналог Сервлетов. Так же компилируется в классы, так же есть фильтры, web.config полный аналог web.xml
3) MVC3 - типичная реализация паттерна MVC
4) EntityFramework - повсеместно используемый ORM
5) Там точно такое же логирование
6) Там точно такая же работа с безопасностью - Технология JavaFX нацелена на запуск из апплетов. Они никуда не делись. Их просто Flash вытеснил из ниши. А так технология жива. Где надо, можно использовать.
- JSF ничем не лучше, чем GWT, но верно и обратное. Никто не мешает использовать JSF (Spring и .тд.) вместе с GWT, например, для красивых и изощренных CRUID.
- Всё очень просто у него в отличии от JSP у JSF нет своей ниши, в которой его применение было бы оправданно, JSF сейчас как pascal служит лишь для обучения но не для решения реальных задач. Куда ни ткни везде конкуренты на голову превосходящие JSF: нужна ынтерпрайз морда пожалуста ZK, нужно веб приложение для массовой аудитории пожалуста GWT один только квейк на GWT чего стоит, нужен сайт тут я вообще молчу JSF с его прожорливостью порвут как тузик грелку всякие Spring MVC, викеты и стратсы, вывод куда ни кинь всюду найдется технология которая покроет JSF как бык овцу.
- JSP, JSF, Struts, Spring, GWT, Wicket , Tapestry
- GWT 2.0 + J2EE6 перспективный выбор
- Flex3 + BlazeDS + Spring + JPA - Вещь!
- JSF 2.0 + GWT 2.0 + Spring@MVC 3.0
- Главные мои критерии - чтоб удобно было работать с Ajax и СУБД. И поменьше писать велосипедов.
Да нормальная штукенция Hibernate. Хочешь - с xml-маппингом, не хочешь - с аннотациями.
Даже с JPA можно жить. Тем более, если, например, полезешь в Google App Engine (JPA или JDO).
Есть конечно и альтернативы - iBatis, например. Добавь к нему iBator - вот тебе и синергия :)
Серьезно, с любым ORM-ом такой гибкости не получишь. Доменные модели и DAO генерируются iBator-ом. При желании можно наделать ручками.
Для Ajax вряд ли есть что-то лучше чем GWT.
Мой выбор: Spring MVC + iBatis & iBator + GWT - Пользую Wicket, IBatis, весьма доволен. Еще Sping'ом приправлено.
- Конечно все зависит от задачи. Сейчас очень интересно выглядит GRAILS, который нацелен на быструю разработку приложений.
- servlets и jsp - основа всего, основу знать обязательно
потом jsf и gwt
затем struts - после jsf оно легко пойдет
и потом spring - там же не только spring-mvc, там и интеграция с jsf и прочее - сразу, извиняюсь за выражение, крышу снести может))
вообще если конкретной задачи не стоит - то простенькие приложения потихоньку можно делать - jsf -все плюются, пробовал сам..работает..но как-то всё достаточно сложно...
jsp + jstl - основа, но иучать с нуля....хмм.....а вообще надо??
gwt - всё красиво....но 1- неяпонятки с лицензированием, + генерируемый javascript...-мне не оч нравится "отдалятся от слоя представления....."
struts....не пробовал...но оч много кто на нём руллит и хорошо получается....все довольны..... - GWT - а для навороченного UI можно использовать gwt-ext или smartGwt
- Раньше использовал Spring, сейчас только Wicket, т.к. не люблю программирование "на языке XML"
- Seam отлично подходит для больших приложений - Из минусов: тяжелый, падла.
- GWT единственный фреймворк который проверяет (компилирует) валидность страницы, клиентского кода и кода серверной части. JSF это хорошо и это стандарт... но код клиентской части не проверяем - увы.
- У нас текущем проекте ,например: EJB3.0 + Struts + JMX
- Мне нужно чтобы Java код скомпилился в JS, JS выполнился на клиенте. нужно чтобы GWT только генерил JS код для страницы. контролы и компановка страницы - не нужны ибо страницы уже сделаны. Хочу заменить не компилируемый, не проверяемый и постоянно бажный JS код на Java код (+ доп. проход компиляции).
- Крупный вендор, отец технологии ткскзть, продвигает собственный SQL-сервер и подходы которые используют его на 100%.
В жаве такого нет, поэтому получили большое распространение подходы где SQL-сервер используется как простая куча ненормализованных табличек. - А в чем реально проблемы работы с большой базой через ORM?
База данных Oracle стОит 40000 у.е за процессор. Она имеет в себе хранимые процедуры на PL/SQL и Java. Она умеет загружать внешние ascii файлы в качестве external tables, парсить xml, отправлять e-mail, а также линковать dll и so-шки на c++. Неужели ты считаешь, что твой говнокод на бесплатной хне с "мапперами" и прочей бредятиной хотя бы на 30% будет эффективней этого чуда-юда? - За последний месяц на хедхантере:
Java - 530 вакансий
C# - 505
PL/SQL - 359
T-SQL - 310
У LINQ совершенно другая цель - универсальный интерфейс для работы с коллекциями.
Comments (
)
Link to this page:
//www.vb-net.com/Java-Welcome/Compare.htm
|