4

Java 虚拟机的运行时实例在生活中有一个明确的使命:运行一个 Java 应用程序。当一个 Java 应用程序启动时,一个运行时实例就诞生了。当应用程序完成时,实例会终止。如果您在同一台计算机上同时启动三个 Java 应用程序,使用相同的具体实现,您将获得三个 Java 虚拟机实例。每个 Java 应用程序都在其自己的 Java 虚拟机中运行。

我正在阅读这篇关于运行时实例的文章,我只是不清楚上面的几行。

public class Test1 {
    public static void main(String args[]) {
        if (args.length > 0) {
            try {
                for (int i = 0; i < args.length; i++) {
                    System.out.println("Args" + args[i]);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

当我运行上面的类时,一个运行时实例就诞生了。一旦完成它的操作,运行时实例就会消失。

  1. 让我们stackoverflow.com在网络上的某个地方托管,应用程序的一个运行时实例是否足以为人们服务,或者根据负载和流量,我们是否在不同的服务器/计算机上创建同一应用程序的不同实例。您如何以及何时决定我们需要为同一个应用创建不同的实例?

  2. 这里是什么same concrete implementation意思?不同的具体实现如何。

如果我的问题在任何方面都非常模糊,我很抱歉,我正在学习 java,但纯粹是在工作HTML/CSS and JS

http://www.artima.com/insidejvm/ed2/jvm.html

4

3 回答 3

1

相当模糊:正确,答案也是如此

2具体实现是一个类,它的所有方法都有实现(与抽象类/接口不同)

1如果需要在基于云的部署中,您可以水平拉伸您的应用程序

于 2013-06-17T21:20:41.380 回答
1

1: 您将如何以及何时决定创建同一应用程序的不同实例?
例如,如果您想要一个靠近用户的应用程序,那么您可以将其中一个部署在亚洲、欧洲、中东和非洲以及美国的服务器上。当您的用户尝试访问它时,您将他们路由到离您最近的服务器,他们将获得尽可能响应最快的用户体验。

现在 - 这并非在所有情况下都是可能的,就像您正在共享数据(例如,如果您是一家银行),那么您必须以一种使其在应用程序的三个实例之间保持一致的方式来管理数据。不过,这可能是另一个问题的主题。

2:相同的具体实现。这通常在您引用抽象类并选择具有类的特定实现时使用。例如 - 如果您有抽象类“Car”并且有一个具体的实现来实现“Ferrari”的 if。

在这种情况下,它使用相同的术语,但使用的方式并不常见。当文本在此上下文中提到具体的实现时,它是说它是同一个程序。即您复制并粘贴“.exe”并再次运行它。在 Java 术语中,您将复制相同的“.jar”文件并执行它。

但是,在这种情况下,您可以在不同的机器上执行此操作,或者如前所述,您可以在同一台计算机上运行它们,如果您查看内存,您会看到三个独立的 java 进程。

于 2013-06-17T21:56:51.287 回答
1

用于个人计算机的 Java 机器是 Word、Internet Explorer 或 Adob​​e Reader 等程序。

它们的设计方式是,如果您同时运行三个 Java 程序,每个程序都有自己的 JVM 开始处理它,而不是在单个浏览器窗口中打开多个选项卡)。

实例一词指的是操作系统将它们视为正在运行的程序,而不仅仅是硬盘上的文件,其中包含大量恰好被命名为 EXE 的字节。

具体实现是指给定的 Java 安装,例如C:\Programs\Java\Java-7.1.2.3\bin\java.exe. 如果您运行此程序 3 次,您将拥有三个正在运行的实例,而不仅仅是一个。

于 2013-06-17T21:24:36.667 回答