了解Java世界中新的一年的趋势。发现无反射框架新趋势的影响及其对体系结构的影响。
从技术角度来看,Java世界内的框架是最大的不同之一。仅使用Java SE平台而不使用任何工具来查看Java中的应用程序具有挑战性。在新的一年里,自然会出现问题,例如在新项目中可以使用哪些框架,框架的类型和趋势。这篇文章的目的是讨论一下Java世界中最流行的框架以及对世界上最流行的语言之一对明年的期望。
毫无疑问,注释或元数据功能在世界范围内促进了许多工作。通常,绝大多数框架都使用这种类型的资源。但是,与这些注释将在何时读取有关的更改是什么:
在运行时:注解信息将在Java应用程序启动后立即读取,并且通常使用Java Reflection
API。促进可插入性和/或即插即用效果的因素,可以通过简单地通过添加依赖项来修改应用程序的行为。另一点是易于封装。例如,由于反射,有可能没有setter的属性。自动增量标识符和反射将顺利解决此问题。
在编译时:此方法旨在将所有Java元数据处理和分析带到编译时而不是执行时。这种类型的方法往往会减少启动时间以及内存消耗。一种实现此方法的方法是使用Java注释处理器。
如前所述,元数据读取对于框架类型来说是一个巨大的游戏规则改变者,因为一般而言,今年最常用的框架具有非常相似的特征:
不仅仅是一个框架,而是一个平台:2020年最著名的框架(通常会在2021年脱颖而出),因为在其保护伞内拥有一系列工具来帮助开发人员在各个方面提供支持,无论是在安全API中还是在集成其余部分API。
依赖注入:通常是一个容器,负责管理应用程序中的依赖。保持体系结构内松散耦合的好工具。
使用数据库和服务进行访问:连接数据库,无论是关系数据库还是非关系数据库,都很重要;毕竟,如果应用程序是头脑,那么数据就是系统的心脏。此时,将减少Java应用程序与数据库之间的所有可能样板。
代码外的配置:诸如数据库用户和密码之类的凭据必须在代码外。在理想的环境中,开发人员或体系结构团队无需遵循十二个应用程序因素的最佳实践,就可以了解此类信息。这些生态系统可以选择通过环境覆盖所有配置。可以以对应用程序透明的方式为每个环境进行配置。
基于前面提到的Java工具的这些特征,突出的Java框架是:
Quarkus:Red Hat创建的最新项目,其主要目标是具有快速启动和降低内存占用的能力,例如NodeJS和Go之类的技术。
Micronaut:可能是Java开发的第一个平台,可以在无服务器架构中非常有效地工作。
Spring:来自Rod Johnson所写的一本书,它基于对Java EE(目前为Jakarta EE)的扩展和改进。
Jakarta EE /
MicroProfile:虽然不一定是框架,但是是规范。这些项目驱动并作为先前项目的基础。重要的一点是,由于有了规范,可以直接更改实现,并且我们有多家供应商正在合作,并使用诸如Wildfly,Payara,TomEE等实现。
下表显示了这些生态系统及其各个组成部分之间的关系。框架之间共享的一点是,每个人都有将属性映射到环境变量的信息的规则。例如,如果您要在本地执行配置属性文件,此功能很有趣,该文件将在生产中透明地覆盖以供应用程序使用,以至于即使开发团队也不需要知道此信息。
云环境中最受欢迎的框架
始终很重要的一点是,根据开发人员或开发团队希望委托给云的操作抽象级别,云世界中存在服务模式。抽象程度越高,业务风险越低;但是,服务成本往往更高。最重要的是,托管服务(如Dan Moore在《每位云工程师应该知道的97件事:专家的集体智慧》中)包含已安装的软件以及这些服务的所有维护和管理知识,从而简化了整个开发团队的生命。
在这种类型的服务中,我们可以将PaaS(平台即服务)归类为服务,因为它使开发团队专注于交付,并极大地减少了云中的操作份额。例如,通过使用PaaS Platform.sh,可以减少操作的复杂性以及使用云时所涉及的风险:
降低琐碎操作的复杂性,例如备份/还原,JVM和数据库更新。
它使用GitOps的概念,即易于频繁部署,易于管理环境变量。它还与Github,Bitbucket和GitLab集成。
定义应用程序和服务(例如数据库)之间的访问控制。
轻松使用CI / CD
服务已经集成,因此只需告诉我们您的应用程序需要什么服务,Platform.sh将管理该应用程序的所有信息。
为了促进现有系统的迁移或基于云的新系统的创建,Platform.sh为Java世界中最流行的框架创建了以下指南:
Quarkus
Micronaut
Spring
Jakarta EE / MicroProfile(Payara)
Java框架最强大的功能之一是在许多框架中找到的,本文提到了其中四个最受欢迎的开发平台。在执行时或在编译时,通过读取注释的方式都可以发现框架体系结构中的一个强大功能。Java框架之间的共同点是它们具有依赖项注入机制,良好实践的配置以及Platform.sh支持,从而简化并加速了云环境中的应用程序。
如果你正在入门学习Java或者即将学习,可以申请加入我的Java学习交流扣扣群:639714511,有什么问题都可以随手来交流分享,群文件我上传了我做Java这几年整理的一些学习手册,面试题,开发工具,PDF文档书籍教程,需要的话你们都可以自行来获取下载。