为了让更多新手快速体验 Java,多年来 Java 偷偷做了这个改进

Java技术迷

共 4999字,需浏览 10分钟

 · 2024-04-01

作为一个准备入门 Java 的新手程序员来说,第一件事儿可能就是要下载一个 IDEA ,如果说有什么 IDE  比 IDEA 还大的话,那恐怕也就是 Visual Studio 了。下载完了还可能一头懵,不知道从何下手。

记得我刚接触 Java 的时候,那时候我还在做 .NET(C#) ,然后对 Python 也比较熟悉。

对于 Python 来说,一个新手装完 Python ,连 IDE 都不用装,就可以在终端中用命令行的方式体验一下交互式编程了,写个 Hello World 也就算了入门了。

而对于 C# 来说,虽说 Visual Studio 好几个G,但是装完之后,一切也就准备好了,建一个命令行项目,写个 Hello World 也算入门了。

但是当初我刚下载完 IDEA 之后,准备建一个命令行应用,找了半天没找到(我以为根本没这个选项,直到很久之后我才发现用 IDEA 怎么创建命令行应用)。结果,我本就准备写个 Hello World  体验一下,发现还要用 Maven 或 Gradle 创建,要知道对于一个 Java 都没入门的人来说,Maven 和 Gradle 只会让人更加糊涂。

如果不用 Maven 或 Gradle 呢,创建一个 java 文件,还要用javac编译。javac是什么好像更让人迷糊了。

Java 也考虑到这个问题了,让准备入门或体验Java的同学,能够以更快、更简单的方式尝试一下 Hello World,不用下载 IDE,不用自己手动编译,只要抄一段 Hello World,直接一个java 命令运行就好了,像 Python 一样简单。

Java 8 确实有些麻烦

假设我们抄了一段 Java 代码,一个Moon.java类,里面一个main方法,输出一个Hello

public class Moon {
    public static void main(String[] args) {
        System.out.println("Hello");
    }
}

没有 IDE 的情况下,我们尝试了一下java Moonjava Moon.java

发现都不行,所以,如果我们想要运行Moonmain方法,要先用javac进行编译。

javac Moon.java

编译成功后,会在Moon.java的目录中出现一个Moon.class的编译后的文件,这个就是字节码文件,JVM 只认这种格式。

然后我们在用java命令来执行Moon类,才能够执行成功。

java -classpath . Moon

这时,就能看到main方法执行成功了,注意其中的-classpath .参数是告诉 Java 去当前目录查找类文件  Moon

现在改的稍微复杂一些了,新加了一个类文件。

Helper.java文件

public class Helper {
    public static void sayHello() {
        System.out.println("Hello");
    }
}

然后Moon.java类在main方法中调用 Helper.sayHello 方法。

public class Moon {
    public static void main(String[] args) {
        Helper.sayHello();
    }
}

那之后再编译的话,就要把这两个 Java 文件都包含在javac的命令中。

javac Moon.java Helper.java

之后仍然可以正常运行java -classpath . Moon

JDK 11 之后

而在 JDK 11 之后,就没这么麻烦了,有点像 Python 那种解释型语言了,直接写完就可以运行了。

仍然是那个输出HelloMoon类。

public class Moon {
    public static void main(String[] args) {
        System.out.println("Hello");
    }
}

直接执行java Moon.java就行了。

但是,问题来了,如果是两个文件,就像 JDK 8 的那个例子,Moon.java调用了另一个Helper.java的方法,大于1个类文件的情况,那还是不行,仍然还是要先编译。

JDK 22 之后

前几天 JDK22 已经发布了,我一看,嘿,JDK22竟然又做了调整,解决了多个文件调用的问题。

Moon.java调用了另一个Helper.java的方法,现在,我们怎么做呢。

直接java Moon.java,然后就可以了。

这是因为增强了 java 启动器的源文件模式,以便能够运行作为多个 Java 源代码文件提供的程序。

    
  
       

        

1、有没有一段代码,让你为人类的智慧击节叫好?

2、国产大模型,什么时候能搞出 Sora ?

3、作为程序员,你的编程技术是从什么时候开始突飞猛进的

4、刚入职大厂,老板让我转语言。。

5、真的,不是谁都会离职后还回你消息的

点分享

点收藏

点点赞

点在看

浏览 5
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报