1.3 常见的用途
前面提供了一些证据,证明了JVM是切实可行的现代软件开发平台,下面来看看一些常见的JVM用途:
- Web应用程序;
- 大数据分析;
- 物联网。
1.3.1 Web应用程序
JVM非常重视性能,很多人都选择使用它来开发Web应用程序。在设计正确的情况下,应用程序在需要跨越众多不同服务器时的伸缩性极佳。
JVM是一个大家了解得非常清楚的平台,这意味着其行为是可预测的。另外,它还提供了很多工具,可用来调试和剖析有问题的应用程序。鉴于JVM是开源的,完全可以对其内部进行监视。对那些必须同时为数以千计的用户提供服务的Web应用程序来说,这是一个非常重要的优点。
JVM在云计算中扮演着重要的角色。Twitter、Amazon、Spotify和Netflix等很多著名公司都在其基于云的服务的核心部分使用了JVM。
1.3.2 大数据
大数据是当前的一个热点。在数据太大,无法使用传统的数据库进行分析时,可搭建多个数据库集群来处理它们。大数据分析包括查找特定的信息、找出规律、计算统计指标等。
这种数据可能是从Web服务器收集的数据(如已登录用户的单击)、位于制造车间的外部传感器的输出、遗留服务器多年来生成的日志文件等。它们的规模各不相同,但通常多达数TB。
下面是大数据领域两种流行的数据分析技术。
- Apache Hadoop:负责存储数据以及将数据分发到其他服务器。
- Apache Spark:使用Hadoop对数据进行流化(stream),以便能够对到来的数据进行分析。
Hadoop和Spark都主要是使用Java编写的。它们都提供了接口,以支持大量的编程语言和平台,其中当然包括JVM。
函数式编程范式致力于创建可在多个CPU内核中安全运行的代码,因此进行Spark或Hadoop编程时,Scala和Clojure等纯函数式编程语言是非常合适的选择。
1.3.3 IoT
当前,能够连接到Internet的移动设备非常普及。鉴于Java最初就是为在嵌入式设备中运行而设计的,因此在IoT领域,JVM也处于优势地位。
对于内存有限的系统,Oracle提供了Java ME Embedded平台。这种平台是专门为不需要标准图形(或基于控制台的)用户界面的商用IoT设备设计的。
对于那些内存还算宽裕的设备,可使用Java SE Embedded版。Java SE Embedded与本书讨论的Java SE很像,在运行完整Linux的环境中,可使用它来提供桌面GUI,以支持全面的用户交互。
Java ME Embedded和Java SE Embedded平台都能够访问Raspberry Pi的通用输入/输出(general-purpose input/output,GPIO)针脚,这意味着可通过Java代码来访问这些端口连接的传感器和其他外围设备。
