如果您刚刚从Java开始,请参阅Java Live Active使用此博客将通过您需要知道的所有重要概念来开始使用框架。
什么是Java框架?
作为模板或骨架的预先写代码的正文,其中一个开发人员可以根据需要填写其代码来使用和重用以创建应用程序,以便在他们打算引用其作为框架时使用的代码来创建应用程序。重用框架使开发人员能够在没有手动开销的情况下从头开始创建每行代码的手动。Java框架特定于Java编程语言,用作开发软件应用程序的平台,Java程序.java框架可以包括用于处理,输入和管理硬件设备的预定义类和功能,以及与系统软件进行交互。这取决于框架的类型,程序员的技能水平,他们试图完成的东西,以及他们的喜好。
为什么要用框架?
框架为您的应用程序提供结构。例如,如果我们有适当的测试框架,我们可以自动化大量的东西并获得准确和一致的结果。同样的方式如果有orm,web应用程序,日志记录,数据管理等框架,它将使开发人员的生活简单,并帮助他们专注于业务逻辑,而不是担心域或应用程序中使用的常见代码。
10个优秀Java框架
虽然Java有许多框架,但这里有一些非常常用类型的框架不同类型 - Web应用程序,网络应用程序,日志记录,测试,ORM等。注意,这些都有其自己的好处,可以为不同的业务工作最佳用例。我们不能说哪个更好,因为它们都在不同的场景中都很好。
Spring
凭借其依赖注入和面向方面的编程特征的概念,Spring逐行开发世界。它是一种用于企业应用程序的开源框架。
在春天,开发人员可以创建松散耦合的模块,其中依赖性由框架处理,而不是根据代码中的库来处理。
Spring框架是详尽的,涵盖了很多功能,包括安全性和配置,易于学习。此外,由于它是最受欢迎的Web框架,您可以找到很多文档和活动社区。
通过配置的所有内容,您的代码将是干净且易于理解的。
主要概念:
- 依赖注入(DI)(控制的反转) - 在此原则上,而不是依次控制流量的应用程序,它使控制到驱动流量的外部控制器。外部控制器是事件。当有些事件发生时,申请流程继续。这为应用提供了灵活性。在春天,IOC由DI完成,其中三种类型 - Setter注入,方法喷射和构造仪注入。
- Bean和Spring上下文 - 在春Spring,对象称为bean,并且有一个beanfactory管理和配置这些bean。您可以将BeanFactory视为实例化,配置和管理bean的容器。大多数应用程序使用XML(beans.xml)进行配置。ApplicationContext哪个BeanFactory用于更复杂的应用程序,需要事件传播,声明机制和与Spring的方面的面向侧向特征的集成。
- 阅读关于一些更多主要的Spring概念。
2.Apache Struts
Apache Struts是Web应用程序的另一个强大的开源框架。它遵循MVC(模型 - 视图 - 控制器)模型并扩展JSP API。在传统的servlet-jsp方法中,如果用户提交给我们的详细信息说明表单,则该信息然后转到Servlet进行处理,或者控制转到下一个JSP(Java Server Pages - 您可以在其中编写Java代码HTML)。由于“View”或演示层理想地没有业务逻辑,这将使复杂应用程序变得令人困惑。
Struts将视图,控制器和模型(数据)分开,并通过配置文件Struts-config.xml提供各自之间的绑定。
控制器是actionservlet,您可以在其中编写视图的模板,并且使用ActionForm JavaBean保持用户数据。操作对象负责转发应用程序流程。
该视图由丰富的标记库维护。
Struts易于设置并通过Servlet和JSP单独使用传统的MVC方法提供更大的灵活性和可扩展性。这可能是您作为Web开发人员的职业生涯的一个很好的起点。
3.Hibernate
虽然Hibernate不是一个全堆栈的框架,但它完全改变了我们查看数据库的方式。Java Persistence API(JPA)的实现,Hibernate是Java应用程序的对象关系映射(ORM)数据库。就像SQL一样,Hibernate中的查询称为HQL(Hibernate查询语言)。
Hibernate直接将Java类映射到对应的数据库表,反之亦然。
Hibernate中的主文件是hibernate.cfg.xml文件,其中包含有关映射Java类的信息,其中包含数据库配置。
Hibernate解决了JDBC - JDBC的两个主要问题 - JDBC不支持对象级关系,如果您决定迁移到不同的数据库,则旧的查询可能无法正常工作 - 意味着很多更改 - 即时间和金钱!
Hibernate提供了一个抽象层,使得代码与数据库松散地耦合。诸如建立数据库连接的东西,执行CRUD操作是由Hibernate处理的 - 所以开发人员不需要实现,因此使得代码独立于使用的数据库。
从这些初学者和高级课程中选择一个或多个,以了解Hibernate和JPA的完整概述。
4. Apache Wicket.
如果您已经与JSP合作,则学习Wicket将成为Cakewalk。一个简单的Java Web框架,Wicket有一个面向组件的结构,您需要知道的只是Java和HTML。绝对没有XML或配置文件!
Wicket的主要特点是IT POJO模型,其中组件很简单(普通旧的)Java对象具有OOP功能。这些组件作为可重用包作为可重用包,其中包含图像,按钮,表单,链接,页面,容器,行为等,以便开发人员可以自定义它们。
Wicket是轻量调,您可以确保建立应用程序。它也很容易在检票口中编写的单元测试代码。
5. JSF(Java Server Faces)
不要将JSF与JSP混淆,这只是可以具有静态和动态内容的文本文档。JSF是由Oracle开发的,作为Java Enterprise Edition 7的一部分。
它是基于组件的MVC框架,并具有基于服务器的应用程序的可重用UI组件。主要思想是封装各种客户端技术,如CSS,JavaScript和HTML,它将允许开发人员在不知道任何深入的任何技术的情况下创建UI。它们只能拖放UI组件并更多地关注其演示层细节。
JSF中的默认模板系统是Facelets。JSF与Struts非常相似。
JSF可以进一步无缝地与启用Ajax的组件集成,以通过为验证和方法调用添加Ajax事件来丰富用户体验。
查看此链接课程以了解更多有关JSF的信息。
6.Dropwizard
另一个Java框架符合其名称 - 向导。这种轻量级框架允许您非常快速地完成应用程序,因为它是对高级配置,日志记录,应用指标等的框支持。您可以创建提供高性能的RESTful Web应用程序,稳定可靠。
DropWizard尤其是神奇的,因为它汇集了一系列库,如Jetty,Guava,Jersy,Jackson和java生态系统中的许多其他人的指标,并为您提供了轻量级和精益的应用。
由于所有配置,安全性和性能相关的任务都有集成的库,因为您需要做的所有配置,就像开发人员建立业务逻辑一样。
DropWizard是一个与库捆绑在一起的开源框架,您可以轻松地使用Eclipse IDE设置并创建一个简单的项目来学习(相信我,您可以自己学习阵列!)。DropWizard网站的基本教程将通过每个步骤帮助您。
7. Grails.
Grails是一种很容易学习的全堆栈框架,适合刚刚开始编程职业的人。虽然Grails是以Groovy编程语言编写的Web框架,但它在Java平台上运行,并且与Java语法完美兼容。该框架基于MVC设计模式。
Groovy类似于Java,与Java相比,有一些更多的功能。如果您已经知道Java,则非常容易学习Groovy。
与JSP类似,在Grails中,渲染技术是GSP(Groovy Server页面)。为Grails中的视图创建标记简单且简单。它还使用GOM,因为您可能已经猜到是Grails中使用的ORM实现。您也可以直接使用Hibernate而不是GOM。Grails为RESTful API建立了支持,因此可以轻松创建此类服务。
以下是最好的部分 - 您可以将现有的Java代码与Grails集成。如果您的应用程序中的Groovy和Java代码混合 - 它将正常工作!
学习Grails的最佳方式是使用像Eclipse,NetBeans等的任何Java IDE设置自己的开发环境……并按照任何这些教程建立您的第一个Web应用程序。
8.ATG
ATG是用Java编写的Web Commerce平台。它是一种可定制和可配置的框架,对与电子商务有关的网站特别有用。该产品由Oracle拥有,并支持复杂和巨大的B2B和B2C应用程序。然而,对于小规模应用,它可能是昂贵的。如果您正在进入开发电子商务网站,ATG是一个很好的学习框架,并将丰富您的技术以及域名知识。
ATG平台可以在三个服务器上运行 - Oracle WebLogic,IBM WebSphere和JBoss。
框架中有3个主要层 -
- Dynamo应用程序框架 - 它是基于JavaBeans和JSP的开发环境提供的基础层。对于所有常用功能,都有标准的ATG类,甚至可以通过通过配置文件链接来创建和组装甚至自定义Java代码。
- 个性化模块 - 这是每个用户的内容是动态定制的。此模块有助于控制和维护用户 - 配置文件和业务规则,该配置文件和业务规则定义要将内容显示到特定用户的内容。此图层还支持有针对性的电子邮件。
- 方案模块 - 此模块通过引入时间敏感的事件驱动的广告系列来增强个性化模块的功能,这些活动是在一段时间内管理站点访问者和内容之间的交互。例如,有限时间提供,某些成员的独家优惠等……
ATG是一个广泛的框架,你需要时间和耐心学习它。几家像沃尔玛,梅奇,最佳,ASDA等几家大公司都拥有他们的网站,建于ATG。
9 Play
Play是一种略微传统和独特的框架类型,遵循“惯例”通过配置的方法。它基于MVC模式,是一个开源Web应用程序框架。除了Java,您可以在Scala中编写播放Web应用程序。
播放类似于Django或Ruby在Rails或ASP.NET架构上,不一定遵循J2EE Web标准。
Play的一些特征是 -
- 由于异步处理,性能高
- 没有容器,没有状态,建立在反应原则上
- 使用静态类型的语言,因此大多数错误在编译时捕获了在开发生命周期的早期节省大量错误。
- Scala探讨了真正的OOP以及一些功能性编程概念。它与Java的兼容性为一个优秀和强大的系统制作。
- 使用Play2,已发布了一个新的强大的构建系统SBT,这使得与Maven Projects易于集成以及创建简单JAR文件。
- 广泛的关系数据库访问库,用于常用功能。
10. Apache Hadoop.
虽然Apache Hadoop不是一个全堆栈框架,但它提供了一个软件框架并在MapReduce编程模型上工作。这些实用程序可以轻松处理大量数据(大数据),存储,分析和处理它们,以提供更快,更高效的结果。
我在这个列表中包含了Hadoop,因为它是今天的“东西”,具有大数据的突出。
Hadoop有助于使用主从设计模式的分布式数据存储和处理。主节点(即NameNode)的Hadoop HDFS(Hadoop分布式文件系统)层具有数据节点。MapReduce图层具有JobTracker和TaskTracker。从节点分别具有数据节点和TaskTracker。
HDFS将文件划分为块集,这些文件在群集中复制。
如果您想熟悉大数据和数据科学 - Hadoop就是您开始的地方。通过这些教程轻松学习Hadoop。
11. GWT.
Google Web Toolkit(GWT)是一个明显创建的框架,由Google创建,在Java中创建丰富的Internet应用程序。 GWT的最佳功能之一是它将Java代码转换为JavaScript代码 - 基于浏览器的超自定义代码。我个人喜欢这个功能,因为在开发期间,我们曾经在浏览器测试中花费了大量的时间和精力。使用此开源组工具集,我们可以在更短的时间内编写高度性能的Web应用程序。如果您已经有一个代码库,您可以轻松地将其与GWT集成,因为GWT也与Eclipse IDE,Maven和Junit兼容。该框架还提供了广泛的窗口小部件库,可以执行大多数任务,使Java中的初学者甚至是开发业务逻辑,而不担心基本的东西。 GWT框架有3个主要组成部分 - Java到JS编译器,坐在核心JRE库顶部的JAVA仿真库和包括UI组件,历史管理和更多功能的GWT UI构建库。
在这里开始学习GWT。
12. vaadin.
Vaadin是一个旗舰产品,也是开发人员可以使用Java进行HTML5 Web UI实现的平台。它是一个开源平台,包括Java Web框架和一组Web组件以及应用程序启动器和工具。这些Web组件形成了Vaadin的核心,可以定制,导致桌面和移动应用程序的高性能和多功能代码。
Vaadin Flow是Vaadin平台的实际Java Framework部分,负责客户服务器通信以及路由。使用Vaadin Flow,您可以完全在Java中完全写入Web应用程序,而无需JS或CSS的FUSS。UI组件使用自动通信和浏览器和服务器处理用户的浏览器活动。您可以轻松地将Vaadin组件集成到您使用的任何IDE中,只需跨平台框架,因此无需担心将代码迁移到其他平台中。
构建Java应用程序是一种全新的方法,以便您可以单独专注于演示层,而无需担心客户端 - 服务器通信。它还具有数据绑定API,可使用类型安全的Java代码和抽象图层将UI组件映射到数据库,以便使用HTML模板和Java构建UI中的可重用组件。
13.Spark
来自Apache的另一个Masterstroke,Spark是一个开源的Web开发框架,它具有与春天,播放和JAX-RS类似的功能,但更强大,并且不遵循传统的MVC设计模式。
它是一个微框架和一个特定于域的语言,用于Java专注于开发速度。它需要非常少的配置和编码。由于内存中的计算,它在数据处理方面比Hadoop快10倍。Spark支持完全动态的框架,支持延迟初始化和实时数据处理。
它也很容易与Scala和R集成,这是专注于数据科学和大数据的编程语言。Spark的主要目标是处理大量数据,并支持使用SQL查询,机器学习和图形算法的高级分析。
不要以为火花可以替换Hadoop - 它可以是Hadoop提供的功能的扩展 - 学习这两个框架如果您进入数据科学领域,这两个框架将为您提供优势。
14. OpenXava.
一种以快速方式开发Web应用程序的低码平台,您可以在记录时间内启动和运行业务应用程序。它由业务组件组成,使建立甚至复杂应用程序简单,可为开发人员提供麻烦。OpenXava的可扩展,可自定义和OO,使用Java类作为其核心来模拟业务问题。这种模型驱动的开发方法确保封装。开发人员仅将模型定义为普通注释的Java类,并且在运行时都会生成必要的功能。
OpenXava的结构和哲学遵循业务组件架构,而不是传统的MVC架构。在这里,一切都是经营理念,并且所有贡献到某个业务概念的伪影都在同一个位置是相关的视图,模型或控制器。
在您了解此框架之前,您肯定应该阅读此语言背后的概念。
15. Vert.x.
由Eclipse开发,Vert.x是一个事件驱动的应用程序框架,它使用了Java,JS,Groovy,Scala等许多语言。因此是本质上的多胶。它依赖于异步编程模型,从而使应用程序不堵塞并没有多线程。
vert.x可以说是一个工具包,提供多种语言的API,以执行所有Web应用程序所需的异步任务 - 记录,身份验证,监视,DB连接,多集群支持等… Vert中有2个主要概念。X -
- verticle - 就像任何其他异步模型一样,存在一个事件循环,该事件循环具有消息,网络缓冲区,HTTP请求等。来自事件循环的每个事件由vertice处理。
- 事件总线 - 不同的顶点使用事件总线互相通信。这是通过异步消息传递完成的。事件总线可以执行不同类型的消息传递,如点,广播和请求 - 响应。
关于Vert.x的最佳方法是其非阻塞性质,使Web应用程序具有高度性能。该框架可用于任何应用 - 小,中或大规模。如果您已经知道node.js,则将更多地欣赏vert.x更多,因为它具有Node.js的所有功能以及Java虚拟机的益处,它使得强大且强大的组合。
16.Tapestry
概念上,Tapestry类似于JSF和Wicket。它是一个开源,跨平台,基于组件的Web应用程序开发框架,可以创建高度可扩展的应用程序。构建在Rich Java Servlet API上,它适用于任何容器或应用程序服务器。Tapestry是一个真正面向对象的框架,因为您使用纯HTML模板或普通Java类(对象)创建HTML页面。几乎没有必需的XML配置,Tapestry相当使用注释,从而使代码简单且易于管理。
使用Tapestry,应用程序停机时间最小,因为甚至可以热插拔均匀的任何更改,而无需重新启动服务器。Tapestry还负责URL构建和重定向。与其他框架不同,这里的框架适应代码,而不是反之亦然。
其中一些开箱功能的挂毯是 - 文件上传,分页,字段验证,日期和日历逻辑,内化,显示弹出窗口等……
很容易与春天,休眠等的后端框架集成挂毯代码,以及测试框架等exenium等框架。
17.Jersey
Jersey是一个Web服务框架,可以创建RESTful服务并支持JAX-RS API。通过有用的功能和实用功能,它大大简化了RESTful服务的开发。Jersey提供了一种抽象层,以便开发人员不必担心客户端 - 服务器通信的低级别实现,并可以专注于主要的Web服务功能。
与任何其他宁静的框架相反,Jersey的一个醒目特征是它允许Chunked输出即,服务器可以向零件或块中的客户端发送响应。当必须发送大数据时,这很有用,并且在准备整个响应时可以发送数据块。
Jersey还可以轻松测试基础设施。您可以编写主要基于JUnit的轻量级集成测试。与Maven环境相结合,还容易集成测试。您需要做的就是添加pom.xml中的依赖项。
18. OSGI
OSGI或Open Service Gateway Initiative定义了基于组件的系统。它是一个受欢迎的Java框架,其中每个组件都被称为捆绑包。每个捆绑都有一个独立的生命周期,不依赖于其他捆绑包。考虑捆绑包是具有OSGi特定的JAR文件。捆绑包必须明确声明他们需要访问的包,而无需哪个OSGI平台。
捆绑包使用JVM级服务注册表来发现,发布和绑定捆绑包作为服务。这是OSGI的本质 - 对于模块化应用程序架构,促进适应性和快速更改,无需超时(运行时灵活性)。
OSGI主要是流行的,因为它与Eclipse和基于Maven的项目轻松集成。
OSGI具有一些好的概念和好处,但由于个人独立的捆绑版本控制可能是一个问题。这可能是使用此框架在其他框架上的一个主要缺点。然而,由于模块化和孤立的课程加载是开发人员的重要概念,值得投资这一框架中的一些时间。
19.Drools
Drools是一个流行的商业规则管理系统。它具有业务规则引擎(BRE),创作,规则管理应用程序和运行时支持,用于决策和符号模型。规则管理应用程序称为Drools Workbench。该项目由Redhat和Jboss支持。使用Drools,开发人员可以轻松地将数据与业务逻辑分开。Drools中的两个主要步骤是 -
- 创作 - 创建规则文件
- 运行时 - 您执行规则的位置
Drools最重要的特点是可以随时删除并添加新规则,而无需重新启动服务器。
Drools是依赖于某些行动的大量条件的应用程序的使用权。例如,要检查一个人是否有资格升级他的计划,例如,有一定的设定规则 - 例如,客户现有数量,客户的账单金额大于特定限制等。这些规则可以定义为决策表而不是在代码中的硬编码它们。任何更改都不需要另一种方式构建,完整的测试或重新部署!
20. Mybatis.
Apache的自由软件,MyBatis是Java中的持久框架,其中Java方法映射了SQL语句,与ORM将Java对象映射到数据库中的表。映射引擎以声明方式使用XML描述符或注释将SQL结果映射到对象树中。
在很多方面,Mybatis比JDBC和Hibernate更好。MyBatis可以动态生成将它们与代码分开的SQL语句。它还提供查询缓存,便于访问。API非常简单,您不必是SQL或数据库中的专家,以便能够编写MyBatis代码。
Mybatis是一个很好的替代Hibernate和JDBC,当您的应用程序不太复杂并且您希望简单的框中的功能,如数据库连接,事务管理,加载数据库驱动程序,管理和释放连接等框架。Mybatis也可以用弹簧框架轻松集成。
21. Apache Mina.
Apache Mina是一个网络应用程序框架,开发人员可以轻松地创建高度可扩展和性能的网络应用程序。无论是使用TCP / IP,UDP,LDAP,NTP,DNS等还是自定义协议,Mina都有所有传输的统一API。该框架可以提供高级和低级别的网络API。Mina完全处理I / O操作,帮助开发人员充分集中在业务逻辑和其他应用需求上。很容易测试在模拟对象的帮助下编写的代码。您可以使用Eclipse IDE轻松学习MINA。它可以与流行的框架相结合,如Spring和Picocontainer,使其成为网络应用的热门选择。
Mina比Soap更好,更稳定可靠。它有一个丰富的网络库来处理并发线程。
从他们的官方页面上了解有关Apache Mina的更多信息。
结论
还有许多其他Java框架不是全堆栈或Web开发框架,但在每个应用程序中都很有用 - 像Logging,JUnit和Selenium用于测试等等。很重要,虽然您可以在与上面列表中看到的其他框架一起了解它们,但您可以了解这些问题。
您申请的最佳框架应满足您的业务需求,提供一定的灵活性和最佳性能,并且易于维护和吸收变化。
例如,对于完整的堆栈Web开发框架,如果需要更改某些东西,它应该影响应用程序最少,即,您不必再次构建和部署应用程序以进行小型更改。只是一个配置变化应该做魔法。此类应用程序节省停机时间并提供灵活性。
明智地选择Java的框架,享受Java提供的功能。