Java应用程序框架Grails的创建者Graeme Rocher近日表示,在云原生世界,通过对Java程序逻辑进行注释和编译细节优化,可以节省云服务器运行成本,开发人员对这些潜在细节的无知可能导致企业付出高昂代价。

在日常开发中,Java程序员主要和框架、工具、API和文档等打交道,好像跟云沾不上边。直到应用程序被推向生产,研发人员可能才意识到这个应用需要千兆字节内存才能运行,此时再开始优化显然来不及,如果基于云平台运行,则会造成大量资源浪费。

虽然Java研发人员主要在运行时管理应用程序,但随着容器化和Kubernetes的普及,不少研发人员也会将应用程序直接部署到Kubernetes,因为其可以大规模协调容器化应用程序。

无论是Kubernetes还是管理应用程序的Oracle云基础架构环境,编写云应用程序的开发人员都需要以不同的方式思考编程和优化方式。相比本地运行,开发人员必须让应用程序对重启、故障转移、启动时间和内存消耗等优化做出响应。毕竟,一旦应用程序在云平台运行,消耗的所有资源都直接与金钱挂钩。

无服务器和微服务优化

当然,上述问题可以通过一些新计算模式得到缓解,但每一种新计算模式的出现都会随之带来一些陷阱。在云计算领域,显著风险来自应用程序的隐藏成本,从表面来看,微服务应该是相对经济的解决方案。

Grails的创建者Graeme Rocher最近因名为Micronaut开源项目获得Oracle Code One颁发的开创性奖项。与开源Web应用程序框架Grails一样,Micronaut基于JVM,但这也是二者唯一相似之处。Micronaut是一个模块化、易于测试的开源框架,用于构建现代微服务和无服务器应用程序。

那么,Micronaut和Java程序员有什么关系?和云计算成本又有什么关系呢?

一般来说,在Java生态系统,研发人员会学习很多关于让应用程序更高效,针对低内存占用进行优化的知识。云平台同样运行着不少用Java语言编写的框架,比如Hadoop、Kafka和Cassandra,这些框架支持长时间运行进程,这些进程可从JVM即时编译中受益。

但是,对于运行时间较短的进程而言,无服务器计算变得很受欢迎,这更适合快速冷启动和低内存占用及短期运行进程的情况,如果进程只是短暂执行然后消失,那么JVM提供的优化就会丢失,就像在效用计算模型中一样。

Micronaut的作用就是将传统架构过渡到更快、更灵活且基于微服务的系统。Micronaut能以亚秒速度执行关键操作,同时支持精益云部署。应用程序的启动时间和内存消耗不会根据程序中的代码行数自动增加。因此,Micronaut不仅适用于公用计算,还是通用开发环境,可以轻松运行在诸如Android等小型内存占用设备和Raspberry Pi等微控制器上。

换句话说,Micronaut满足云原生、多语言、独立于设备的需求,并与GraalVM等项目完美集成,用于编译运行速度更快的Java代码。 当然,研发人员也不必局限于Micronaut这一种选择。

Java不一定很沉重

研发人员通常认为Java意味着重量级,这种判断更多地与JVM提供的用于构建框架的API和工具有关,这些历来基于运行时使用,运行时注释分析及构建应用程序的方式不可避免地导致内存消耗增加。

相比之下,预编译将编程语言转换为Java字节码或将字节码转换为机器代码的过程 ,对许多开发人员来说是未知的,但在某些应用程序平台被大量使用。Micronaut所做的是采用这一理念并将其应用于服务器端编程。

Java应用程序需要等待几秒钟才可启动的日子已经过去,这要归功于微服务的出现,但这并不是Micronaut的唯一优势,它还集成了追踪和安全工具,并且不必容器化。如果使用Java应用程序,研发人员可能需要依赖容器实现许多功能。Micronaut让这些功能都在运行时编译,因此容器需求就会消失,这让测试变得更加容易。

参考链接:
https://www.forbes.com/sites/oracle/2019/01/07/grails-founder-what-java-developers-dont-know-about-memory-can-cost-them-money-in-the-cloud/#2792bb3044e1

Micronaut项目开源地址:https://github.com/micronaut-projects/micronaut-core

Java程序员:不要因未知而让云成本大涨相关推荐

  1. Java程序员用了3个月从月薪5k涨到20k,我是这么做到的?

    学生投稿 先说一下自己的个人情况,大专生,18年通过校招进入湖南金蝶软件公司,干了接近3年的CRUD,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干 ...

  2. java程序员修炼之道 pdf_?活动丨和大咖云风来场1对1交流,分享《程序员修炼之道》心得...

    曾经获得无数赞誉,畅销20年经久不衰的IT领域经典著作--<程序员修炼之道>,多年来频繁出现在众多行业大咖和广大读者的推荐书单中.如今,这本广受推崇.好评无数的经典之作出新版啦! ▊< ...

  3. 程序员为什么老得快_中国程序员工资为什么那么高?老程序员:淘汰速度快,入行成本大...

    在中国,程序员的行业平均工资比一般的传统行业的工资都高,大多数传统行业有自己的职业天花板,不是职位晋升困难,就是工资水平有自己的天花板.而在互联网行业,程序员这个职业这种现象就不是很明显,月薪上万是普 ...

  4. 作为一个Java程序员,javaweb教程视频教程百度云

    前言 打工人,打工魂,打工都是人上人,记住,打工才是王道,我们都要做打工人.人可以一天不吃饭,但不能一天不打工.打工让我们身心愉悦,节假日是掏空我们的身体.别睡了,打工仔,起床打工吧! --<打 ...

  5. Java程序员面试如何超常发挥?

    面试时,你是不是也遇到过这样的情况,明明感觉自己表现发挥的很好,甚至进入到二面环节,到最后却没能拿不到入职offer,连自己"死在"哪块都不清楚.现实工作中这样的例子不在少数,究其 ...

  6. Java程序员需要掌握哪些技能才能通过大公司的面试

    首先我们来谈一下程序员的阶段,在学校里的三年对于程序员来说是第一个门槛,这个阶段将会淘汰掉一批不适合写代码的人.这一阶段,我们走出校园,迈入社会,成为一名程序员,正式从书本上的内容迈向真正的企业级开发 ...

  7. java增删改查_只会增删改查的Java程序员该如何发展

    首先,对于当前的Java程序员来说,要想在软件开发领域走得更远,应该做好三件事,其一是为自己设定一个主攻方向,其二是根据自身的知识基础和能力特点来制定学习计划,其三是注重行业发展趋势,积极拥抱新技术. ...

  8. java程序员 待遇_Java程序员之间薪资对比,为什么差距这么大?

    原标题:Java程序员之间薪资对比,为什么差距这么大? Java程序员这个岗位挣钱吗?能赚好多钱?有许多将要加入这一行业的年轻人同事都很想问这种问题,我想说的话"各行各业,行行出状元&quo ...

  9. 刚入行java程序员VS 3年以上java程序员,太形象了,哈哈哈~·~

    点击蓝字 关注我们 最近咱们动脑学院来了一位刚毕业的java小鲜肉 老大把他分配给有3年工作经验的喇叭带 动脑君看着他们俩 对比超级明显的工作表现都快笑死了 不行!必须要分享给大家!!! 笑死也得拉个 ...

最新文章

  1. PHP如何把三张图片均匀分布,怎么把一张图片分成9张
  2. Apache配置文件的帮助查询
  3. tensorflow学习(5.实际图片的读取以及lenet-5的搭建)
  4. 10种常用排序算法实现
  5. 用javascript实现以下功能!_模电小实验:用三极管实现触摸开关功能
  6. 在Qt Designer中创建主Windows
  7. gdb调试的基本使用
  8. 把函数包起来就是一个R包 - 完整开发指南
  9. spark 读写SequenceFile
  10. vs python调试配置_想用Python编程却不知如何下手?一篇搞定编程准备工作
  11. 怎样任意裁剪图片?如何快速改变图片形状?
  12. linux多个网卡丢包,linux系统双网卡绑定及丢包问题
  13. 深红色LaTeX PPT模板解释说明
  14. Android HAL层
  15. django基础入门之搭建博客系统
  16. ubuntu18安装
  17. 会声会影x4素材_会声会影2020多重修整视频功能与操作
  18. 谷歌账户无法添加_如何将另一个Google帐户添加到您的Android设备
  19. 人生本来极短,像流星刬过天空一样
  20. From COM to COM 侯捷

热门文章

  1. WCF技术剖析之十一:异步操作在WCF中的应用(上篇)
  2. DotLucene源码浅读笔记(1) : Lucene.Net.Analysis
  3. Linux Shell常用技巧(一)
  4. Android .so和.a的makefile
  5. 解决mxnet错误:OSError: libcudart.so.10.0: cannot open shared object file: No such file or directory
  6. Android 12来了,支持更多设备,你的应用准备好了么?
  7. 一个循环、一个变量打印乘法口诀
  8. 关于CATALINA_BASE
  9. #pragma multi_compile_fwdbase会增加很多个shader variants
  10. python面向对象进阶