代码之家  ›  专栏  ›  技术社区  ›  ubiquibacon

在小程序中使用主方法是否合适?

  •  1
  • ubiquibacon  · 技术社区  · 15 年前

    我正试图用小程序的使用规则来概括自己的想法。我意识到小程序不必有主方法(它可以使用 init() 但是我教授提供的每一个代码示例都是一个带有主要方法的小程序,如下面的代码中所示。

    我的理解是,由于安全问题,在小程序中使用主方法不是一个好主意,这是正确的吗?我何时(如果有)应该在小程序中使用主方法?

    另外,我的教授正在使用类似这样的小程序嵌入到PowerPoint演示文稿中,然后他可以在演示期间轻松运行。如果小程序使用 inti() 而不是 main() ?我这样问是因为我看不出他为什么要在这样一个小程序中使用主方法的任何原因,除非当嵌入到PowerPoint演示文稿中时小程序需要正确运行。

    //EventDispatcherThreadDemo.java
    
    import javax.swing.*;
    
    public class EventDispatcherThreadDemo extends Japplet{
    
        public EventDispatcherThreadDemo(){
            add(new JLabel("Hi, it runs from an event dispatch thread"));
        }
    
        public static void main(Stirng[] args){
    
            SwingUtilities.invokeLater(new Runnable(){
    
                public void run(){
                    JFrame frame = new JFrame("EventDispatcherThreadDemo");
                    frame.add(new EventDispatcherThreadDemo());
                    frame.setSize(200, 200);
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    frame.setLocationRelativeTo(null);
                    frame.setVisible(true);
                }
    
            });
    
        }
    
    }
    

    另外,这与家庭作业无关,只是想了解关于小程序的更多信息。

    4 回复  |  直到 15 年前
        1
  •  4
  •   Thorbjørn Ravn Andersen    15 年前

    这个 main 方法对小程序没有任何特殊意义。

    你的教授在一个JFrand中包含了几行来激发这个类,以便能够用一个简单的“JavaFoBar”命令从命令行运行它。这与运行“appletviewer foobar”命令相反,该命令可能与从其他程序(如PowerPoint)启动有问题。虽然它没有提供完整的applet环境,但是演示程序可能很简单,这并不重要。

    我不知道他为什么选择这样做,而不只是用一个大的HTML页面显示小程序。

        2
  •  3
  •   Andrew Thompson    15 年前

    main()对小程序没有安全影响,因为它不是由小程序容器调用的。即使是这样,小程序仍将被限制在安全沙箱中。

    但是,开发一个混合的小程序/应用程序有很大的意义。传统的基于帧的应用程序。比小程序更容易开发和调试。

    如果您想向最终用户提供这两个表单,也可以理解。;)

    看到这个 example of a hybrid 这可能有助于证明。

        3
  •  2
  •   Tom Hawtin - tackline    15 年前

    不幸的是,许多示例代码都采用了不应该遵循的捷径。这里的危险是,学习者没有处于一个好的位置,什么是模仿,什么不是。

    小程序生命周期方法和 main 方法是upcalls的示例。和监听器一样,它们应该简短,提取必要的信息,封装upcall的处理,并在对该对象有意义的对象上调用一个方法(特别是不受upcall依赖性的影响)。

        4
  •  1
  •   finnw    15 年前

    实际上那里 至少有一个安全问题。假设您的小程序:

    1. 签署
    2. 在其中保留调试代码 main 方法执行一些潜在危险的操作,例如写入文件

    然后攻击者可以创建 Java Web Start 指向.jar文件并启动 主要的 具有完全权限的方法。

    可以通过添加 空的 文件调用 JNLP‑INF/APPLICATION.JNLP 到.jar文件。但是可能还有其他的攻击,所以我认为你的教授避免它是正确的。