基础篇-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 ...
随机推荐
- SQLServer 可更新订阅数据在线架构更改(增加字段)方案
原文:SQLServer 可更新订阅数据在线架构更改(增加字段)方案 之前一直查找冲突发布和订阅数据不一致的原因,后来发现多少数据库升级引起,因为一直以来都是在发布数据库增加字段,订阅也会自动同步.在 ...
- System.Exception: ORA-12541: TNS: 无监听程序
今天在一个服务器上发布一个web服务(数据库也装在这台机器上):开发工具 Visual Studio 2008 Oracle但是部署好,浏览的时候报错了:System.Web.Services.Pro ...
- 安卓ImageButton圆角按钮设置
首先图片要做成圆角的,使用美图秀秀,这个不多说. 之后使用设置了圆角的按钮,效果有缺陷,按钮会有灰色的边角. 类似这样: 去掉的方法是将layout的 android:src="@draw ...
- Android实现dialog时候弹出软键盘dialog移位问题
Window win = getWindow(); WindowManager.LayoutParams params = win.getAttributes(); win.setSoftInputM ...
- 如何作为一个优秀的ERP实施顾问
原文地址:如何作为一个优秀的ERP实施顾问作者:天思软件 作一个优秀的ERP实施顾问无论是天思.金蝶,用友,还是其他业务软件.实施顾问的发展道路都差不多. 1.初级实施顾问,中级实施顾问,高级实施顾问 ...
- 80%的岗位是没有太多能力上的要求的(少部分聪明的人开始觉醒,这部分一定是那些主动追求、主动学习的人;30岁现象能区分真正专业和不学无术的人)good
不要沦陷程序员的30岁问题 热门> 就是学习能力和工作热情态度的问题. 我之前也跟作者一样思考过这个问题,答案是否定的. 在知识积累的行业,年纪越大,越吃香,比如金融,医学,IT.就怕3 ...
- LockWindowUpdate
//锁住listview防止反复刷新 LockWindowUpdate(Self.lvsearch.Handle); 貌似不太行,多用几下就卡住了 那个函数几乎不用 ...
- 漏洞告诉你:商家为什么都乐于提供免(diao)费(yu)WiFi?
作为一名小微商户,每天我除了要为经营小店忙得焦头烂额,还要想方设法地寻求提升用户体验.于是,我用了号称“营销神器”的某商用WiFi系统...... 然后不可思议的事情发生了:连上此WiFi的手机(包括 ...
- 《C++ Primer》读书笔记 第一章
读<C++ Primer>才知道,自己对C++知之甚少... 写个博客记录下自己C++的成长,只是读书笔记,不是对<C++ Primer>知识点的总结,而是对自己在书上看到的以 ...
- Call调用webservice接口,使用命名空间和不使用命名空间的区别
生活中我们会遇到许许多多的奇葩问题,而这些问题又是我们不得不解决的. 我先用一段代码来引出我想要说的内容: import javax.jws.WebMethod; import javax.jws.W ...