写点什么

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

2019 年 1 月 09 日

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

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


2019 年 1 月 09 日 09:007413
用户头像
赵钰莹 InfoQ高级编辑

发布了 691 篇内容, 共 405.6 次阅读, 收获喜欢 2257 次。

关注

评论

发布
暂无评论
发现更多内容

强烈安利第一个画图工具!

我是程序员小贱

高效工作 高效

python3.8.3安装ipython和jupyter

LinkPwd

python3.x Jupyter Notebook

预告|2020中国CRM品牌测评报告

人称T客

5G时代,如何彻底搞定海量数据库的设计与实践

奈学教育

海量数据库的设计与实践

csapp-chapter1

卓丁

深入理解计算机系统 csapp

csapp-chapter2

卓丁

深入理解计算机系统 csapp

ARTS-WEEK02

lee

centos6.9开机启动服务说明

唯爱

如何让解决无法访问 GitHub 的问题?

JackTian

GitHub

深入理解JVM垃圾回收机制 - 何为垃圾?

WANDEFOUR

深入理解JVM 垃圾回收机制

Silicon Labs Gecko bootloader 简介

taox

zigbee bootlaoder

过滤器 和 拦截器 6个区别,别再傻傻分不清了

程序员内点事

Java

机器学习算法评估指标——2D 目标跟踪

做技术BP的文案Gou

学习 2D 评估标准

别做误人子弟的「职业导师」

Tony Wu

职业成长 导师 教练

我是一个连地摊都不会摆的废人

Neco.W

创业 投机 投机者 地摊

【大厂面试03期】MySQL是怎么解决幻读问题的?

NotFound9

MySQL 数据库 编程 架构

游戏夜读 | 网络游戏怎么赚钱?

game1night

判例学习(一)梨视频诉字节跳动帮助侵权二审判决

尹晓铁

学习 读书笔记 互联网 知识产权 法律

TCP 半连接队列和全连接队列满了会发生什么?又该如何应对?

小林coding

Linux TCP 网络安全 计算机网络 网络协议

白天写代码,晚上摆地摊!9年前摆地摊学会了这些道理...

王磊

深入理解Java虚拟机

WANDEFOUR

深入理解JVM

NIO 看破也说破(五): 搞,今天就搞,搞懂Buffer

小眼睛聊技术

Java 学习 读书笔记 架构 后端

大厂经验(1):一套Web自动曝光埋点技术方案

DeeperMan

大数据 数据采集

万字总结——反射(框架之魂)

学习Java的小姐姐

Java 反射 Java 25 周年

大数据中台之Kafka,到底好在哪里?

奈学教育

kafka

MyBatis启动之XMLConfigBuilder解析配置文件(二)

ytao

后端 mybatis

Android工程架构演进及康威定律

石头

hexo博客系统的实现原理与搭建

音视频专家-李超

Hexo 博客

分布式架构,刚性事务-2PC必须注意的问题及3PC详细解

奈学教育

分布式架构 2PC注意事项 3PC详解

C++:两百字三段代码解决函数返回局部变量问题

韩小非

c++ 函数栈调用 返回局部变量

HTML5 && CSS

shirley

html5 css3

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

Java程序员:不要因未知而让云成本大涨-InfoQ