本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

码报:Java 老矣,尚能饭否?(4)

时间:2017-06-21 17:57来源:668论坛 作者:118KJ 点击:
Java 语言一直缺乏语言级别的模块化能力,目前模块化技术通过 OSGi, JBoss Modules 等项目,已经在服务端程序得到了广泛的应用。Java 在语言级别引入模块化

Java 语言一直缺乏语言级别的模块化能力,目前模块化技术通过 OSGi, JBoss Modules 等项目,已经在服务端程序得到了广泛的应用。Java 在语言级别引入模块化能力,将极大的促进 Java 应用程序组件化,模块化的改变。应用程序通过模块化拆分,可以做到更灵活的引入,加载,移除组件,占用更少的内存,更适合云计算时代的要求。在 JDK9 EA(预览版)中,原有的 rt.jar 已经被划分为若干了 jmod,通过模块内的 module-info.java 文件来声明模块间的引用关系。

然而,模块化改造是个渐进而适度的过程,Java9 为了可兼容 Java8 以前应用程序的运行,做出很多的让步,模块定义严格性没有那么苛刻。各个厂商也有对自己现有系统可无缝运行在 Java9 上的商业诉求。Java 模块化提案还得花更多的时间去讨论和修改。

Java9 中的 jshell 工具实现了 REPL,即读取,求值,打印,循环。这个工具可以使得开发者交互式的使用 Java,方便于系统管理,调试,使用。可以想像到有了 jshell 后,Java 语言更加适合初学者入门学习。

Jlink 工具和 AOT(预先编译技术)。一直以来,Java 运行方式是把程序编译成 class 文件,然后通过 jvm 运行的。这种工作方式可以做到跨平台移植,在互联网时代初期,各种 Unix 繁荣和 Windows 在桌面的一统局面下,对于占据市场起到决定性作用。

然而到了今天,无论是大型互联网公司还是企业内部,x86 平台 64 位服务器已经成为主要的选择。从运行效率考虑,可以把 java 程序编译成可执行的二进制文件,更加适应云计算和容器技术发展的需要。

利用 jlink/jaotc 工具,可以把一个 Java 程序编译成可执行文件,在 Java9 推出时,可能只有 java.base 模块支持 AOT。

安全方面的加强。引入新的摘要算法 SHA-3,内置 ALPN 使得更好的支持 HTTP/2 协议,提供 DTLS(数据包传输层安全性协议),可以保证 UDP 数据传输的安全,PKCS12 格式替代原有的 JKS 成为 keystore 的默认格式。

此外,统一 JVM 日志 (Unified JVM Logging),多版本共存 jar(Multi-release jar files),接口内部的私有方法 (Interface provate method) 等也是非常重要的新特性。

7与其他语言的对比,Java 的优势

Java 是最好的语言么?不是,因为在每个领域都有更合适的编程语言。

C 语言无疑是现代计算机软件编程语言的王者,几乎所有的操作系统都是 C 语言写成的。C++ 是面向对象的 C 语言,一直在不断的改进。

Java 是能运行在浏览器中的语言,丰富的前端界面离不开 Java 的功劳。近年来的 Node.js 又在后端占有一席之地。Python 用于系统管理,并通过高性能预编译的库,提供 API 来进行科学计算,文本处理等,是 Linux 必选的解释性语言。

Ruby 强于 DSL(领域特定语言),程序员可以定义丰富的语义来充分表达自己的思想。Erlang 就是为分布式计算设计的,能保证在大规模并发访问的情况下,保持强壮和稳定性。Go 语言内置了并发能力,可以编译成本地代码。当前新的网络相关项目,很大比例是由 Go 语言编写的,如 Docker、Kubernetes 等。

编写网页用 PHP,函数式编程有 Lisp,编写 iOS 程序有 Swift/ObjectiveC。

一句话概括,能留在排行榜之上的语言,都是好的语言,在其所在的领域能做到最好。

那么,Java 语言到底有什么优势可以占据排行榜第一的位置呢?

其一,语法比较简单,学过计算机编程的开发者都能快速上手。

其二,在若干了领域都有很强的竞争力,比如服务端编程,高性能网络程序,企业软件事务处理,分布式计算,Android 移动终端应用开发等等。

最重要的一点是符合工程学的需求,我们知道现代软件都是协同开发,那么代码可维护性,编译时检查,较为高效的运行效率,跨平台能力,丰富的 IDE,测试,项目管理工具配合。都使得 Java 成为企业软件公司的首选,也得到很多互联网公司的青睐。

没有短板,容易从市场上找到 Java 软件工程师,软件公司选择 Java 作为主要开发语言,再在特定的领域使用其他语言协作编程,这样的组合选择,肯定是不会有大的问题。

所以综合而言,Java 语言全能方面是最好的。

8Java 未来方向的展望

如今的 Java,已经在功能上相当丰富了,Java 8 加入 Lambda 特性,Java 9 加入模块化特性之后,重要的语言特性似乎已经都纳入进来。如果要说值得考虑的一些功能,我觉得有以下几点:

(责任编辑:本港台直播)

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容