Препоръка за Java framework?

+6 гласа
657 прегледа
попитан 2016 юни 27 от Rado.T. (1,360 точки)
Здравейте. От скоро започнах да се занимавам с Java програмиране. Бихте ли ми препоръчали няколко фреймуорка, които да разгледам и да избера с кой да започна?

3 отговори

+3 гласа
отговорени 2016 юни 28 от Daniel Ivanov (11,160 точки)

1.На първо място за мен е Vraptor:  www.vraptor.org

Ви раптър  e фреймуърк с отворен код с голям брой разработчици и юзъри.  Той е простичък и бързо за схращане, като в същото време разполага с голям набор от функции.  

Плюсове:

Vraptor притежава много добър и лесен за употреба Java EE 7 CDI  (Context Dependency Injection);

SOA and Rest – Ready;

Много добра документация на английски и португалски език;

 Минуси:

На места може да е сложен за използване, понеже иска добри познания на CSS, HTML and JavaScript;

Липса на добър съпорт и помощ;

Все още малко хора го използват в сравнение с другите framwork-ове.

2. На второ място слагам Spring framework-а:  https://spring.io/

Спринг ти предоставя обширен и подробен модел за твоите начинания с Java на всякакви платформи, свързани с програмиране и конфигуриране на приложения. Ключов елемент на Спринг е инфраструктурния съпорт на самите приложения. Спринг се фокусира върху бизнес логиката на ниво приложение, като така спестява на разработчиците занимаването им допълнително с различните среди за deployment.

Плюсове:

Огромно community, голям набор на плъгини и наличието на нужното ниво на сигурност и защита (security).

Аспектно- ориентирано програмиране, включващо свой мениджмънт по деклариране на транзакции.

Фундаментална поддръжка на JDBC (Java Database Connectivity), JPA (Java Persistence API) и JMS (Java Message Service), и не на последно място Dependency Injection.

Минуси:

Спринг си има и своите лимити и някои неща могат да бъдат много трудни за намиране;
Понеже е голям фреймуърка, е и сравнително бавен спрямо другите.

3.На трето място идва Grails framework:   grails.org

Грейлс е много добър уеб фреймуърк за Java, чиято цел е да увеличи продуктивността на разработчиците многократно благодарение на „Конвенцията преди Конфигурацията“ и на практичните и чувствителни настройки на приложно-програмния интерфейс. Интегрира се перфектно с виртуалната машина на Java  - JVM като ти предоставя много разнообразни фийчъри като интегрирания обектен и релационен мапинг  ORM (Object/relational mapping), домейн-специфични езици, рънтайм и compile тайм метапрограмиране и Asynchronous програмиране.

Плюсове:

Grails предлага добра подредба на нещата;  включва не само контролер за моделен изглед, иначе наречен MVC (model-viewer-controller) , ORM, GSP технология (Groovy Server Pages) и build система. Можеш също така да ползваш предния си java код на уеб проектите си и дори и да решиш да кодираш с Groovy, пак ще можеш да ползваш java библиотеките в проекта си. И не на последно място – много добър съпорт в самите IDE-та ( интегрираните среди за работа) и текстови редактори (text editors), като например IntelliJ IDEA, Eclipse, Sublime, Textmate и т.н.

Минуси:

Вероятни проблеми с някои plugin-и и конфигурации, които могат да отнемат часове, за да се оправят, което би било проблем ако се появят преди някакъв deadline (краен срок).

Лесно се научава, но трудно можеш да вникнеш в дълбочина и да ползваш по-интересните и улисняващи работата плъгини.

4.На Четвърто място е Spark.

Сайт: http://sparkjava.com/

Спарк е простичък и лесен за употреба фреймуърк за уеб на Джава, разработен специално за бързи deployment-и. Първоначално е бил направен по Sinatra ( друг framework), но целта му не е да се съревновава с него или с други подобни фреймуъркове, а да предостави една чиста алтернатива на уеб девелъпърите, които искат да си разработват своите уеб приложения на Java. Spark ползва ламбда философията на Java 8 като това го прави по-малко празнословен.

Плюсове:

Лесен за употреба и директен към проблемите framework, сравнително гъвкав;

Премахва нуждата от тромави конфигурации като XML;

Добра интеграция с Groovy и Kotlin.

Минуси:

Route handling-а куца на места и може да поради малко ядове, които обаче лесно се оправят;

Понякога администатора не отговаря на въпросите и сякаш съпорта го няма от време на време.

5. Play https://www.playframework.com/

Плей е фреймуърк, която прави лесно build-ването на уеб приложения с Java & Scala.

Базиран на web-friendly архитектура, той е лек и лесен за употреба. Направен е така, че да има  минималнo потребление на CPU, RAM и thread-ове.

Плюсове:

Перфектен за мобилни устройства – RESTful е по default;

Притежава asset компилатор за CoffeeScript, LESS и др.;

Websockets,Comet,EventSource;

Съпортва BigData;

Build-ваш на Аkka.

Минуси:

Dependency resolution-а е бавен;

Scala/sb може понякога могат да са бавни;

Липса на някой фийчъри спрямо Spring.

Като цяло минусите са в бързината на плъгина, въпреки горепосочените минимални потребления на ресурси.

6. Apache Wicket https://wicket.apache.org/

Апачи Уикет, измислен през 2004 г. , е един от малкото оцелели във времето фреймуъркове. Той е open-source , component oriented, serverside Java web фреймуърк. С история повече от едно десетилетие, той продължава да се развива и да бъде от водещите в бранша.

Плюсове:

Предлага писане на чист Java i HTML код;

Отворен код е и има много голям съпорт, което го прави търсен от разработчици;

Поддържа Multitask-ването много добре - с multi-tab & multi- windows;

Притежава WicketTester, което позволява на QA екипите да си извършват нужното тестване и това е един от най-големите плюсове на този фреймуърк според мен.

Много добра сигурност и защита;

Интеграция на Java EE, AJAX компоненти и има Injection support.

Минуси:

Сравнително по-труден за научаване и за употреба фреймуърк.

Големият набор от фийчъри предразполога към сложност на моменти и би бил сложен за повечето начинаещи.

Пораждане на празнословни редове и четливи, но бая дълги кодове, което не е много приятно.

Липсата на експерт в маркетинга във framework-а може да накара хората, занимаващи се в нея област да не го ползват.

+3 гласа
отговорени 2016 юни 28 от G.Ivanoff. (920 точки)

Ще се опитам да допълня колегата и да дам моите предложения:

WaveMaker http://www.wavemaker.com/  

УейвМейкър е много бърз и мобилен фреймуърк. Прославя се съв своята лекота и простота. Има автоматичен мулти-дивайс съпорт, deployment на Zero DevOps. 

Плюсове: 

Един от най-добрите drag & drop девелопмънти; 

Тестване и рънване само с помощта на 1 клик; 

Добра поддръжка на Cloud технологии и много бърз. 

Минуси: 

Много е бърз, но на по-силни машини, по-стари компютри на Windows се затормозяват и се справят по-бавно спрямо други фреймуъркове; 

Правенето на по-големи app-ове на 1 страница забавя машината значително. 

Apache Struts struts.apache.org  

Апачи Стрътс е безплатен, с отворен код MVC framework. Изполва се за правене на елегантни и модерни Java приложения и също като Grails използва „Конвенцията преди Конфигурацията“. Притежава голям набор от плъгини и поддържа REST, AJAX & JSON (Representational state transfer, Asynchronous JavaScript and XML и JavaScript Object Notation). 

Плюсове: 

Перфектен за малки и сравнително лесно за правене приложения; 

Един от най-бързите за Руутинг и form capture; 

Много добра интеграция с 3rd party софтуер – Уеб сърввис фреймуъркове като например Apache CXF & IOC (Inversion of Control) контейнери като Spring; 

Минуси: 

Struts губи смисъл на ползване след появата на Spring на пазара – липса на свой собсвен Dependancy injection I фактът,че е MVC framework го прави рядък за изполване спрямо другите фреймуъркове, вършещи по-разнообразна работа. 

  

Vaadin vaadin.com       

Ваадин е фреймуърк с над 150,000 девелопъра, притежаващ Java server-side компоненти и е перфектен в правенето на single web-page приложения. Има 596 addon-а, близо 100,000 поста във форумите ( средно по 800 на месец) и притежава доста добър графичен интерфейс, спрямо други фреймуъркове. 

Плюсове: 

Красив и изчистен GUI; 

Става все по-оптимизиран и по-оптимизан във времето; 

Изключително добра интеграция със Spring framework-а; 

Липсата на преграда между front & backend-а прави всичко много по-лесно – ползването на един език и за 2-те неща забързва работата и се харесва на много разработчици. 

Минуси: 

Vaadin дизайнера се плаща и не може да бъде лесно интегриран в STS-a (Spring SourceSuite-а); 

GUI development-а изиксва практика и без дизайнера става трудно; 

Първоначалното зареждане на фреймуърка може да е по-дълго. 

1Apache Tapestry tapestry.apache.org  

Апачи Тапъстри е компонентно- ориентиран фреймуърк, насочен към правенето на детайлни и мащабни уеб приложения на Java. Страниците на Apache Tapestry са POJO-та (plain old Java objects), които са лесни за използване и интегриране. 

Плюсове: 

Притежава скоростта и дълбочината на Java и гъвкавостта на Ruby & Python; 

Базиран е на POJO класове, streamlined templates, live class reloading, state-of-the-art exception reporting и Ajax support от най-висок клас. 

Има и много добър Exception reporting и има туулове за тестване на кода. 

И не на последно място има и Dependancy injection. 

Минуси: 

Спрямо другите фреймуъркове няма голям набор от фийчъри; 

Има известен брой бъгове, които не се оправят много на време; 

Документацията може още да се подобри. 

+1 глас
отговорени 2016 юни 27 от Павката (3,410 точки)
Обяви за работа, които на мен са ми били интересни са включвали Spring MVC, GWT, Struts, ...
Тук има едно независимо проучване по въпроса:
http://zeroturnaround.com/rebellabs/top-4-java-web-frameworks-revealed-real-life-usage-data-of-spring-mvc-vaadin-gwt-and-jsf/

  Обикновено за начинаещи се препоръчват по-разпространените заради наличието на повече документация, примери и материали. На Ваше място бих започнал със Spring. Материали бол.
...