基础篇-1.1走进Java世界
在走进Java世界之前,我们势必先了解下Java是什么?Java是一门面向对象的编程语言,是静态面向对象编程语言的代表,极好得实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。Java具有简单性、面向对象、分布式、安全性、可移植性、多线程和动态性等特点,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
1 认识Java的生存环境——JRE和JDK
JRE,全称Java Runtime Environment,Java运行环境,包含了Java虚拟机、Java核心类库、运行Java应用程序和Applet所必须的文件。而JDK,Java Development Kit, Java 语言的软件开发工具包(SDK),包含了JRE的超集,以及编译器和调试器等用于程序开发的文件。
因此,如果只需要运行Java程序的话,只需要JRE就可以了,通常JRE是非常小的,当然也包含了JVM。但是,如果是想要开发Java程序呢,就需要安装JDK了。
Java程序的开发到运行的流程基本如下:
编写Java文件 ——> 通过JDK编译成Class文件 ——> 通过JRE解释运行
1.1 那么,JVM是什么呢?
JVM,其实就是JRE中包含的Java虚拟机,它的本质是一种规范,可以使用软件或硬件来实现,就是一个虚拟的用于执行Bytecodes字节码的计算机。其中也包含了指令集、寄存器集、结构栈、垃圾收集堆和内存区域。
JVM的解释运行规则是边解释边运行,如果只是需要运行一次性的代码,这种方式是非常快的。但是,如果是存在那些热点代码,即会频繁的被重复运行的代码,那样速度就会受到一定的影响了。所以,JRE提供了另外一种运行方法JIT(Just In Time),即时编译,是运行时期把字节码编译成原生机器码的技术,一句一句翻译源代码,但是会将翻译过的代码缓存起来以降低性能耗损。而如果JIT对每条字节码都进行编译,则会负担过重,所以,JIT只会对经常执行的字节码进行编译,如循环,高频度使用的方法等。它会以整个方法为单位,一次性将整个方法的字节码编译为本地机器码,然后直接运行编译后的机器码。JVM的解释运行+JIT的编译运行,这样就大大的提高了Java代码的运行效率。
Java为什么说会有跨平台的可移植性呢?关键也是在JVM。不同的操作系统有不同的虚拟机,而Java的跨平台实现的核心就在于,Java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,随处运行”。
1.2 Java开发环境的安装和配置
(1)官网下载JDK:https://www.oracle.com/technetwork/java/javase/downloads/index.html

需要注意的是,点进去后一定要选择“Accept License Agreement”,否则不给你下载的。然后根据自己电脑的操作系统来选择相应的JDK下载,如Windows 64位,则选择最后两个的任意一个,一个是安装程序方式安装,另一个是安装包方式安装。

(2)下载下来后,可以看到jdk-12的安装包

将其解压到相应文件夹下,如D:\Java。

(3)配置环境变量
右击单击计算机,点击属性,然后点击其中的“高级系统设置”,弹框再点击“环境变量”。

配置JAVA_HOME变量。

配置Path,修改系统环境变量Path,加上%JAVA_HOME%\bin,注意不要再在目录后面再添加分号逗号之类的符号了,因为win10此处新建的每一行都会默认地加上分号。

打开cmd命令窗口,输入“java -version”,出现如下输出则说明Java环境变量已经配置成功了。

注意:JDK11以及以上的版本不再需要配置CLASSPATH的系统环境变量,并Path中也不用再添加JRE路径了。
2 完成第一个Java程序——Hello World!
2.1 Java程序就是这么简单
(1)在对应文件夹下,如D:\sky\code,创建一个Java文件,命名为MyFirst.java。

(2)编辑文件,如下所示。
// 类名 MyFirst
public class MyFirst {
// 每一个类的唯一一个main方法
public static void main(String[] args) {
// 输出本小结的重点,Hello World!
System.out.println("Hello World!");
} }
注意:
- Java文件名一定要与类的名字一样,如MyFirst。
- 每一个类,只能有一个main方法,并且运行的时候也只是运行此main方法。
(3)打开cmd命令窗口,并进入到MyFirst.java文件所在的目录D:\sky\code。

(4)用javac命令编译MyFirst.java文件,并且没有报错,查看到该目录下生成了MyFirst.class文件。


(5)用java命令运行MyFirst程序。

注意:每次修改程序代码后,都得重新javac重新编译一次再执行,这样才能使修改的代码生效。
2.2 总结
Java被称为计算机的高级编程语言,其涵盖了两种类型:编译型和解释型。
编译,利用编译器(javac)将源程序(即java文件)编译成字节码文件(即class文件)。
运行,又称解释运行,利用虚拟机(解释器和java)解释执行class字节码文件。
3 开发工具
开发工具的作用,主要是让开发者能够更有效率地编程。现在网上比较流行的Java开发工具,主要有Eclipse、MyEclipse和Idea。其中MyEclipse就不多说了,各种插件功能都比较全,但就是要收费。相对的,Eclipse和Idea就比较好,虽然有些插件没有,但是一般也不影响开发效率,该有的快捷键都有,该有的插件也都有,当然最关键的是它们都是免费的。Idea也有收费版,就相当于MyEclipse。
这里就不对开发工具做详细的介绍了,开发工具嘛,就是辅助开发者开发,提升开发效率。对于初学者来说,这里就比较推荐Eclipse和Idea了。对应IDE的快捷键和操作说明,可以自行在网上百度查找,或者上官网查看文档的。下载的话,直接在官网上面下载就好。
Eclipse官网:https://www.eclipse.org/downloads/
Idea官网:https://www.jetbrains.com/idea/download/#section=windows
基础篇-1.1走进Java世界的更多相关文章
- [原]Java修炼 之 基础篇(二)Java语言构成
上次的博文中Java修炼 之 基础篇(一)Java语言特性我们介绍了一下Java语言的几个特性,今天我们介绍一下Java语言的构成. 所谓的Java构成,主要是指Java运行环境的组成, ...
- 《手把手教你》系列基础篇(五)-java+ selenium自动化测试- 创建首个自动化脚本(详细教程)
1.简介 前面几篇宏哥介绍了两种(java和maven)环境搭建和三大浏览器的启动方法,这篇文章宏哥将要介绍第一个自动化测试脚本.前边环境都搭建成功了,浏览器也驱动成功了,那么我们不着急学习其他内容, ...
- Java核心基础第1篇-走进Java世界
一.Java简介 1.1 Java概述 Java从一开始就以友好的语法.面向对象.内存管理和最棒的跨平台可移植性来吸引程序员. 写一次就可以在所有地方执行( write-once/run-anywhe ...
- [原]Java修炼 之 基础篇(一)Java语言特性
学习软件开发,首先要选择的就是选择需要采用的编程语言,考虑语言本身的优缺点和实际需求,综合评价之后选择相关的语言进行系统开发.本篇博客开始就从近年来比较流行的Java开始为大家讲起. 背景 1995年 ...
- 基础篇:深入解析JAVA泛型和Type类型体系
目录 1 JAVA的Type类型体系 2 泛型的概念 3 泛型类和泛型方法的示例 4 类型擦除 5 参数化类型ParameterizedType 6 泛型的继承 7 泛型变量TypeVariable ...
- 基础篇:详解JAVA对象实例化过程
目录 1 对象的实例化过程 2 类的加载过程 3 触发类加载的条件 4 对象的实例化过程 5 类加载器和双亲委派规则,如何打破双亲委派规则 欢迎指正文中错误 关注公众号,一起交流 参考文章 1 对象的 ...
- 基础篇:深入解析JAVA注解机制
目录 java实现注解的底层原理和概念 五种元注解详解 使用动态代理机制处理注解 spring.AOP和注解机制 (题外)@FunctionalInterface原理介绍 欢迎指正文中错误 关注公众号 ...
- 基础篇:深入解析JAVA反射机制
目录 反射的概念 获取Class的三种方法 JAVA反射API 反射机制应用的场景 反射和JDK动态代理 欢迎指正文中错误 关注公众号,一起交流 参考文章 反射的概念 java的放射机制:在程序运行时 ...
- 基础篇:深入解析JAVA异常
目录 1 异常的分类和继承关系 2 几种常见异常类的解析 3 Java异常关键字 4 开发过程处理异常注意点 5 异常和AutoCloseable(1.7-JDK的语法糖) 6 throw和throw ...
随机推荐
- Win10如何关闭自动更新服务
原文:Win10如何关闭自动更新服务 第一步: 小娜搜索"gpedit.msc",进入本地计算机策略设置. 第二步: 找到策略位置:本地计算机策略-计算机配置-管理模板-Windo ...
- MessageBox用法大全
//1.显示提示信息 MessageBox.Show("Hello World!"); //2.给消息框加上标题 MessageBox.Show("Hello World ...
- LINQ查询表达式---------from子句
LINQ查询表达式---------from子句 LINQ的查询由3基本部分组成:获取数据源,创建查询,执行查询. //1.获取数据源 List<, , , , , }; //创建查询 var ...
- 线程间操作无效: 从不是创建控件“labMessage”的线程访问它。
解决方法:1.在窗体加载时加上这一句 private void FormDate_Load(object sender, EventArgs e) { Control.CheckForIllegalC ...
- 因内存释放而引发的中断问题,dll中new的内存释放问题
调试程序,每次关闭一个界面就会弹出中断错误. 为了确认这个问题,我将出现问题那一段代码中的函数一个个屏蔽,以此来确认到底哪个函数出现问题,缩小范围: 最后我发现,只要屏蔽掉checkIfFingerI ...
- 我怎么忽略了身份框架魔法,只是使用OWIN验证的中间件,以获得要求我寻求什么呢?
该OWIN中间件的东西第三方登录集成到您的ASP.NET应用程序是非常酷的,但我似乎无法弄清楚如何就剜出来的新的ID,它取代了蹩脚的成员身份 API.我没有兴趣在坚持所产生的债权,并在英法为基础的数据 ...
- Qt编程中QDiaog的ESC建
最近使用QDialog时,按了下Esc键,导致QDialog被关闭,而后续的数据处理出现了问题.原来在QDialog中按下Esc键会默认调用reject()方法而不是closeEvent(QClose ...
- 如何把zip文件直接解压到内存里?
解压到硬盘再读进来耽误时间. var LZip: TZipFile; LMem: TMemoryStream; LBytes: TBytes;begin LZip := TZipFile.Cr ...
- 动态链接库(Dynamic Link Library)学习笔记(附PE文件分析)
转载:http://www.cnblogs.com/yxin1322/archive/2008/03/08/donamiclinklibrary.html 作者:EricYou 转载请注明出处 注 ...
- Silverlight消散,WinRT登台
2011年,Silverlight刚开始有蓬勃发展的起色,不利的传言就开始大量流传.不安的Silverlight开发者们要求微软澄清,但得到的只是沉默.终于随着微软在BUILD上亮相Window 8以 ...