在我的计算机科学课中,我们开始使用Java Eclipse中的类:
public class FirstApp extends Applet implements ActionListener, MouseListener, MouseMotionListener
{
不是我在其他地方看到它的方式:
class FirstApp {
public static void main(String[] args) {
...
}
}
有什么区别?如果我将一段代码更改为第二个代码,会发生什么?
答案 0 :(得分:2)
不同之处在于您的第一个示例使用了Applet technology,现在已被广泛弃用。浏览器将在它创建的JVM中为您运行它。
Java applet是一种特殊的Java程序,支持浏览器 使用Java技术可以从互联网上下载并运行。小程序 通常嵌入在网页中并在a的上下文中运行 浏览器。 applet必须是java.applet.Applet类的子类。 Applet类提供applet之间的标准接口 和浏览器环境。
您的第二个示例是一个旨在由JVM直接调用的Java应用程序。命令行参数将作为String数组传递到main()
。即。
java -cp . org.example.FirstApp
答案 1 :(得分:0)
正如Adam在his answer中指出的那样,两个例子之间的区别在于第一个程序是Java Applet,第二个程序是普通的Java应用程序。
applet在您的浏览器中运行,它将为您启动Java解释器并创建applet。在创建applet之后,Java解释器调用方法init()
,初始化时,applet将通过方法start()
启动。在第一个示例中,没有运行代码。
要添加一些要执行的代码,您必须实现start()
方法,这将使您的applet看起来像这样:
public class FirstApp extends Applet implements ActionListener,
MouseListener, MouseMotionListener
{
public void start() {
// Code to execute when started
}
}
实现的接口是事件侦听器,它使applet能够对某些用户事件做出反应。正常的应用程序不一定实现这些,因为命令行应用程序不需要图形事件监听器。
您可以从浏览器或Eclipse启动applet,就像您在计算机科学课程中所做的那样。当通过Eclipse启动applet时,Eclipse负责在自己的窗口中启动和显示applet,因此您不必编写将嵌入applet的网页。
应用程序在您(用户)直接启动的Java解释器中运行。启动时,Java解释器运行main(String[])
方法,因此上层示例的等效项将是:
public class FirstApp {
public static void main(String[] args) {
// Code to execute when started
}
}
在您编译之后(通过javac FirstApp.java
),可以通过命令行启动正常的应用程序,如下所示:
java FirstApp
当然,也可以通过Eclipse使用" Launch"来启动应用程序(即编译和解释)。按钮。