u盘解除写保护工具usbmonv3(u盘解除写保护工具usbmonV4.0)本文是“NativeCompilationsBoostsJava”系列文章的一部分。你可以通过订阅RSS接收更新通知。Java主导着企业级应用。但在云计算领域,采用Java的成本比它的一些竞争对手更高。原生编译降低了在云端采用Java的成本:用它创建的应用程序启动速度更快,使用的内存更少。那么,Java用户的问题来了:原生Java是如何改变开发方式的?我们在什么情况下应该切换到原生Java?什么情况下又不应该切换?我们应该使用什么框架?本系列文章将回答这些问题。对服务器端Java认识的改变2017年,Java服务器端出现了一个认知问题。随着向微服务和轻量级容器化运行时的转变,开发人员开始注意到传统Java应用程序的膨胀,它们被打包并部署到Servlet容器的共享Java虚拟机(JVM)上。Serverless的出现进一步加剧了这种认知。正是在这段时间,ObjectComputing的一个团队开始重新思考如何从头开始设计Java框架。于是Micronaut框架诞生了,这是一个采用了不同做法的Java框架,它通过使用Java注释将框架的组装计算工作所转移到了编译阶段。这完全消除了传统Java框架使用的反射、运行时生成代理和复杂的动态类加载。2018年4月,Micronaut框架首次公开发布,引发了Java社区巨大的思维变化,改变了人们对Java“缓慢而臃肿”的看法。许多较新的项目也采取了类似的做法:将更多的逻辑转移到应用程序的构建和编译阶段,以此来优化应用程序的启动性能和消除反射。构建编译时的好处很明显:在编译时计算更多的东西,那么在运行时就可以以最优的方式执行。消除了反射、动态类加载和运行时生成代理,为我们提供了进一步的下游优化机会,包括JIT和(关键的是)GraalVM的原生镜像工具。因为采用了这种方法,原生镜像不需要额外的配置信息就可以对Micronaut框架应用程序进行静态分析。由于Micronaut框架和GraalVM之间存在这种协同作用,Micronaut框架联合创始人GraemeRocher加入了OracleLabs。OracleLabs不仅有GraalVM,也为正在进行的Micronaut框架的开发做出了重大贡献。Micronaut框架介绍人们对Micronaut框架的一个常见误解是,它是专为微服务设计的。事实上,Micronaut框架也为一系列应用程序类型提供了一种极限模块化的架构!Micronaut框架实现了JSR-330依赖注入规范,并提供了许多附加的内置特性,是一个绝佳的基于注解编程模型的通用框架。它的特性包括:配置注入;AOP编程概念枣激,如拦截器;内置了对云原生应用程序基本概念的支持,如验证、缓存、弹性重试、作业调度等。Micronaut基于NettyI/O工具包构建了一个pile使用Maven是这样:./mvnwpackage-Dpackaging=native-image这两个命令都将在工具的构建目录中为目标平台生成原生可执行文件。运行原生可执行文件:./demo______|/(_)_________________||_||/|||/__|'__/_|'_/_`||||__||||||(__|||(_)||||(_|||_|||_|_||_|_|___|_|___/|_||_|__,_|__,_|__|Micronaut(v3.4.0)[main]INFOio.micronaut.runtime.Micronaut-Startupcompletedin23ms.ServerRunning:http://localhost:8080启动时间减少到几毫秒(上面春做的例子是23毫秒),内扒岩衡存消耗也显著下降。有了这样一个巨大的改进,就可以将Micronaut应用程序部署到内存限制有限或启动速度非常关键的环境中(例如,无服务器工作负载)。需要注意的是,目前正在进一步研究通过由OracleLabs开发的MicronautAOT项目来实现更重大的改进。它在构建原生可执行文件之前会对字节码进行额外的静态分析,以优化和消除死代码路径,并将YAML转换为Java,避免在运行时使用YAML解析器,等等。为云而构建除了原生镜像,Micronaut框架还支持许多不同的打包格式和部署目标,包括:使用./gradlewassemble或./mvnwpackage构建的传统JAR包。使用./gradlewdockerBuild或./mvnwpackage-Dpackaging=docker构建的Docker镜像。使用./gradlewdockerBuildNative或./mvnwpackage-Dpackaging=docker-native构建的包含原生可执行文件(来自GraalVM原生镜像)的Docker镜像。自定义AWSLambda运行时,可以将Micronaut应用程序部署到无服务器平台。与Kubernetes集成,可以简化在Kubernetes集群中的部署。总的来说,Micronaut框架提供的特性使其成为构建云原生Java应用程序的最佳选择,从分布式配置支持到集成服务发现,再到为AWS、GoogleCloud、Azure和OracleCloud等云供应商提供的公共抽象实现模块。这些抽象确保你的应用程序可以在云供应商之间保持可移植性。总结Micronaut框架为服务器端Java工作负载带来了一股新鲜的空气。它提供了一种创新的编译时方法和特性,使其成为构建现代云原生Java应用程序的最佳候选。与GraalVM原生镜像的紧密集成,以及与OracleLabsGraalVM团队的工作关系,意味着MicronautAOT和Micronaut序列化(JacksonDatabind的无反射替代方案)等项目将继续带来重大创新。Micronaut框架有一个充满活力的社区,提供了许多提高开发人员生产力的模块,包括与数据库技术集成的MicronautData。社区的反馈将继续推动框架的发展。因此,如果你有任何反馈,请不要犹豫,通过Micronaut社区分享关于新功能和改进的想法。作者简介GraemeRocher是几个流行开源项目的创建者,包括Grails和Micronaut,也是《Grails权威指南》的合著者。Graeme目前是Oracle的架构师。Graeme是JavaChampions成员,并因其在开源方面的重要贡献于2018年荣获由Oracle颁发的Groundbreaker奖项。了解更多软件开发与相关领域知识,点击访问InfoQ官网:https://www.infoq.cn/,获取更多精彩内容!平台