以下为视频文案:
大家好,我是蜗牛。
同学们都知道 Java 吧,挺牛逼的一门编程语言,阿里、字节、美团很多大厂都在用它!
它在后端发力最威猛,所以 Java 后端工程师,是很多年来招聘市场需求量非常大的岗位。
不管你有没有成为 Java 后端工程师,只要你对 Java 感兴趣,蜗牛今天就可以手把手教你跑通一个 Java 程序!
话不多说,我们开始第一步,安装开发环境!
Java 开发环境的搭建,需要安装 JDK。
JDK 是个什么东西呢,顾名思义,就是 Java 语言开发工具包。它包含了 Java 开发和运行的各种工具,是 Java 程序员无法离开的东西。
JDK 官网就可以下载,不过你会发现很多 JDK 版本,那用哪个版本比较合适呢?
这里给大家一个选择 Java 版本的思路。其实任何一项技术的使用,都可以参考这个思路。
就是技术选型要考虑稳定性和普遍性两个点。
稳定性代表着这项技术经过了测试和实践的检验,能修的 bug 都修了,基本不会有什么大的问题。
普遍性代表着这项技术被广泛使用甚至形成良好的社区交流氛围,这就意味着你可能踩的坑基本都被别人踩过了,即便遇到什么问题,也可以很快在网上找到答案。
按照这个思路,选择 JDK 8 这个版本最合适!
JDK 8 是 Oracle 公司在 2014 年 3 月推出的里程碑式的一个版本,同时也是长期支持的版本。
几年里,该版本经过多次更新,已经非常稳定,目前被广泛应用于各大互联网企业中,而且该版本新增的函数式编程能力以及很多全新的语言特性,非常受开发者们的欢迎。
也就是说,如果你现在找工作,公司用的 JDK 版本大概率是 8。那如果你基于 8 来学习,工作时再搞 Java 就没有学习成本了。
那我们就安装 JDK 8!官网下载稍微麻烦一些,我把下载好的文件放到公众号里了,后台回复 JDK 就能自取。
我这边是 Mac 电脑,所以简单演示下 macOS 系统下 JDK 的安装和配置,Windows 电脑的同学也不用担心,我写了对应的文档教程放在了评论区里。
下载后得到的 dmg 安装包。
按提示安装后, /Library/Java/JavaVirtualMachines/ 下会新增一个文件夹 jdk1.8.0_281.jdk,该文件夹下可以找到 JDK 的家目录,其全路径为:
/Library/Java/JavaVirtualMachines/jdk1.8.0_281.jdk/Contents/Home
接下来就是配置环境变量,目的就是让 Java 相关的指令,能被计算机识别到,方便计算机运行 Java 程序。
一、打开配置文件
进入终端,输入以下指令进入编辑页。
sudo vi ~/.bash_profile
二、添加 Java 家目录,类路径和指令路径的配置,若已存在则用目标值覆盖。
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_281.jdk/Contents/Home
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
三、生效配置文件。
source ~/.bash_profile
四、验证 JDK 是否可用。
java -version
输入版本指令后,看到以上信息就说明 JDK 可用了。
环境安装后,我们来动手写个 Java 小程序。同学们也知道,程序员写的第一个程序永远是;没错,那我们就写个 HelloWorld 小程序。
在什么编辑器里写 Java 代码呢?Eclipse ?IDEA?还是其他什么呢?
我这里选择记事本,不借助任何的集成开发环境,就用最原始的手写代码的方式来编码!
Windows 用户可以直接打开记事本,macOS 用户可以在控制台键入这个命令来打开记事本:
open -a TextEdit
然后我们开始写 Hello World 应用程序代码。
我们先写 Java 类,public class HelloWorld,然后一对花括号,花括号里面写入口方法,public static void main,然后入口方法参数,用 String 数组,接着一对花括号,然后花括号里写打印 Hello World 的逻辑。我们用 Java 自带的打印方法 System.out.println(),然后把 “Hello, World!!!” 放进去。
这样代码就写好了,简单介绍下几个关键字,
public 是 Java 语法中的访问权限修饰符,
class 代表我这个源码文件是个普通类,这个关键词是最常用的,它的兄弟还有 interface(接口类)和 enum(枚举类)。
class 后边的 HelloWorld 就是编码时为当前这个类起的名字。按照命名规范,类名是字母和数字的组合,首个字符必须是大写字母。
类名后面的花括号即 {} 里边的内容就是类的定义。
static 是静态修饰符,表明被修饰的内容可以被当前的类直接引用,而不需要将类实例化。
此处修饰了 main 方法,表明 main 方法可以直接被 HelloWorld 引用。
void 是 main 方法的返回值,此处表示无返回值。
main 圆括号里的内容,就是 main 方法的入参,String[] 表明这是一个字符串数组,args 代表变量。
它的作用就是,启动 Java 应用的同时,能够传递一个 String 类型的数组来定制化应用的初始化属性。
方法申明后面的花括号里边的内容就是方法的定义。
System.out 是 Java 提供的一个静态的打印流对象,通过他可以进行打印相关的操作,在它的基础上,调用 println 方法,就可以在控制台输出指定的信息。
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello, World!!!");
}
}
好,讲完源码,我们保存文件,命名为 HelloWorld.java,注意文件扩展名是 .java,代表这是 Java 源码文件。
好,代码写好了,怎么能让他跑起来呢?
很简单,两步走战略,先编译后执行。我们一个一个讲。
第一步,编译源码文件。
Java 文件只是源码文件,还不能执行,必须把它转换成字节码文件,也就是 .class 文件才能够执行。这个转换的过程就是编译。
编译指令是 javac,c 就是 compile(编译) 的首字母。
我们试着执行一下javac HelloWorld.java
命令,嗯?
遇到报错没关系,一般看提示就能解决,我们看下提示,然后对比下代码。
哦,代码少了一个分号,Java 每行代码都是用分号结尾的。大家注意花括号和分号不要漏掉。
我们再次执行javac HelloWorld.java
,好,这次通过了!此时 HelloWorld.java 文件会被编译,然后同目录下就会生成 HelloWorld.class 文件。
javac HelloWorld.java
第二步,执行字节码文件。
.class 文件生成,而且该文件内部有 main 函数,说明有程序执行的入口,那其实意味着 Hello World 程序已经写好并且达到可运行的状态了。
那怎么跑这个 Java 程序呢?
很简单,通过 java 命令即可,命令的参数就是 class 名,如下:
java HelloWorld
此时激动人心的时刻就到来了!我们看到控制台打印了 Hello, World!!! 然后程序退出。
这意味着我们成功写好了第一个 Java 应用程序,并顺利运行!
那么整个过程是怎么发生的呢,接下来我们分析一下。
一、用 JDK 中的 javac 命令将 Java 源代码进行编译,生成 Java 字节码,也就是 class 文件。
javac 命令可以在 JDK 家目录的 bin 目录下找到。
二、用 JRE 的 java 命令执行 class 文件时,Java 字节码会被传输到 JVM(Java 虚拟机),JVM 会合并字节码以及 JRE 中的库文件一起执行,输出特定硬件平台的机器码,或者说指令集。
三、机器码被底层物理硬件平台执行。
通过这个过程,我们也会发现,要想做到 Write Once, Run Anywhere(一次编写,到处运行) 这样的跨平台特性,就必须保证 class 文件无论在哪个平台都能正常执行,但不同硬件平台接收的指令集有很大差异,那就需要有个东西基于不同的操作系统平台来做适配,担起这一重任的就是 JVM。
因此,正是 JVM 的不跨平台特性,才实现了 Java 语言的跨平台特性。
像我们本文的 HelloWorld 的源码,经过编译生成了 HelloWorld.class,然后我在 macOs 上用 java HelloWorld 可以执行它。
此时,我把 HelloWorld.class 复制到 Linux 环境或者 Windows 环境中,同样用 java HelloWorld 来执行,是可以得到与 macOs 中相同的结果的。
事实上,如果我复制 HelloWorld.java 文件到 Linux 环境中,同样 javac,生成的 class 文件也是相同的。
再结合这个图,你也可以理解为什么我们下载 JDK 要区分操作系统版本了。
好了,本期视频就到这里,看完是不是对 Java 有了新的认识呢?如果喜欢我的视频,欢迎三连,转发,收藏,关注我,这会对我有非常大的帮助。
那么我们,下期见!