启动测试应用:
- $ docker-compose up app
- micronaut-petclinic_db_1 is up-to-date
- Starting micronaut-petclinic_app_1 ... done
- Attaching to micronaut-petclinic_app_1
- app_1 | 04:57:47.571 [main] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.PostgreSQL95Dialect
- app_1 | 04:57:47.649 [main] INFO org.hibernate.type.BasicTypeRegistry - HHH000270: Type registration [java.util.UUID] overrides previous : org.hibernate.type.UUIDBinaryType@5f4e0f0
- app_1 | 04:57:47.653 [main] INFO o.h.tuple.entity.EntityMetamodel - HHH000157: Lazy property fetching available for: com.example.micronaut.petclinic.owner.Owner
- app_1 | 04:57:47.656 [main] INFO o.h.e.t.j.p.i.JtaPlatformInitiator - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
- app_1 | 04:57:47.672 [main] INFO io.micronaut.runtime.Micronaut - Startup completed in 159ms. Server Running: http://1285c42bfcd5:8080
应用启动速度如闪电般提升至 159ms,仅有 HotSpot VM 的1/50!
Micronaut 和 Graal VM 还在快速发展中,迁移一个 Spring 应用还有不少工作需要考虑。此外 Graal VM 的调试、监控等工具链还不够完善。但是这已经让我们看到了曙光,Java 应用和 Serverless 的世界不再遥远。
总结与后记
作为进击的巨人,Java 技术在云原生时代也在不停地进化。在JDK 8u191 和 JDK 10 之后,JVM 增强了在 在 Docker 容器中对资源的感知。同时社区也在多个不同方向探索 Java 技术栈的边界。JVM OpenJ9 作为传统VM的一员,在对现有 Java 应用保持高度兼容的同时,对启动速度和内存占用做了细致的优化,比较适于与现有 Spring 等微服务架构配合使用。
而 Micronaut/Graal VM 则另辟蹊径,通过改变编程模型和编译过程,将应用的动态性尽可能提前到编译时期处理,极大优化了应用启动时间,在 Serverless 领域前景可期。这些设计思路都值得我们借鉴。
在云原生时代,我们要能够在横向的应用开发生命周期中,将开发、交付、运维过程进行有效的分割和重组,提升研发协同效率;并且要能在整个纵向软件技术栈中,在编程模型、应用运行时和基础设施等多层面进行系统优化,实现 radical simplification,提升系统效率。
感谢这个时代,感谢所有帮助和支持我们的小伙伴,感谢所有追梦的技术人,我们一起开拓云原生的未来。
(编辑:ASP站长网)
|