在走进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世界的更多相关文章

  1. [原]Java修炼 之 基础篇(二)Java语言构成

    上次的博文中Java修炼 之 基础篇(一)Java语言特性我们介绍了一下Java语言的几个特性,今天我们介绍一下Java语言的构成.        所谓的Java构成,主要是指Java运行环境的组成, ...

  2. 《手把手教你》系列基础篇(五)-java+ selenium自动化测试- 创建首个自动化脚本(详细教程)

    1.简介 前面几篇宏哥介绍了两种(java和maven)环境搭建和三大浏览器的启动方法,这篇文章宏哥将要介绍第一个自动化测试脚本.前边环境都搭建成功了,浏览器也驱动成功了,那么我们不着急学习其他内容, ...

  3. Java核心基础第1篇-走进Java世界

    一.Java简介 1.1 Java概述 Java从一开始就以友好的语法.面向对象.内存管理和最棒的跨平台可移植性来吸引程序员. 写一次就可以在所有地方执行( write-once/run-anywhe ...

  4. [原]Java修炼 之 基础篇(一)Java语言特性

    学习软件开发,首先要选择的就是选择需要采用的编程语言,考虑语言本身的优缺点和实际需求,综合评价之后选择相关的语言进行系统开发.本篇博客开始就从近年来比较流行的Java开始为大家讲起. 背景 1995年 ...

  5. 基础篇:深入解析JAVA泛型和Type类型体系

    目录 1 JAVA的Type类型体系 2 泛型的概念 3 泛型类和泛型方法的示例 4 类型擦除 5 参数化类型ParameterizedType 6 泛型的继承 7 泛型变量TypeVariable ...

  6. 基础篇:详解JAVA对象实例化过程

    目录 1 对象的实例化过程 2 类的加载过程 3 触发类加载的条件 4 对象的实例化过程 5 类加载器和双亲委派规则,如何打破双亲委派规则 欢迎指正文中错误 关注公众号,一起交流 参考文章 1 对象的 ...

  7. 基础篇:深入解析JAVA注解机制

    目录 java实现注解的底层原理和概念 五种元注解详解 使用动态代理机制处理注解 spring.AOP和注解机制 (题外)@FunctionalInterface原理介绍 欢迎指正文中错误 关注公众号 ...

  8. 基础篇:深入解析JAVA反射机制

    目录 反射的概念 获取Class的三种方法 JAVA反射API 反射机制应用的场景 反射和JDK动态代理 欢迎指正文中错误 关注公众号,一起交流 参考文章 反射的概念 java的放射机制:在程序运行时 ...

  9. 基础篇:深入解析JAVA异常

    目录 1 异常的分类和继承关系 2 几种常见异常类的解析 3 Java异常关键字 4 开发过程处理异常注意点 5 异常和AutoCloseable(1.7-JDK的语法糖) 6 throw和throw ...

随机推荐

  1. SQL Server 命名实例更改端口进行发布订阅

    原文:SQL Server 命名实例更改端口进行发布订阅 两台数据库服务器,都没有加入域,都安装多实例,端口也不一样了.现在使用命名实例进行复制,折腾了好久,才发现解决方法. 服务器A:myserve ...

  2. Resolve conflict using "MERGE_HEAD (origin/HEAD)"

    Git进行同步的时候,经常会出现冲突,有时候冲突的选项会有图示中的三种选项: 1.Resolved:直接把文件标识为冲突已经解决,一般是自己手动查看并解决完冲突以后使用. 2.Resolve conf ...

  3. MySql5.7.11 for Windows 安装精简版(一)

    原文:MySql5.7.11 for Windows 安装精简版(一) 从官网下载压缩包,我下载的是64位的.解压. 精简: -Bin下只保留 mysqladmin.exe mysqld.exe my ...

  4. Node.js模板引擎学习----ejs

    环境:windows+node.js+express 一.安装ejs 打开cmd窗口,输入npm install ejs -g,等待下载安装完成. 二.使用 调用过程中使用路由机制和模板,路由请求地址 ...

  5. Lucene Index Search

    转发自:  https://my.oschina.net/u/3777556/blog/1647031 什么是Lucene?? Lucene 是 apache 软件基金会发布的一个开放源代码的全文检索 ...

  6. PyCharm安装MicroPython插件

    转载请注明文章来源,更多教程可自助参考docs.tpyboard.com,QQ技术交流群:157816561,公众号:MicroPython玩家汇 前言 PyCharm可以说是当今最流行的一款Pyth ...

  7. visual studio添加docker支持简记

    很久以前学过一段时间的docker,那时装了电脑卡得受不了,学了一会就卸载了,最近电脑又装上了docker,感觉好像没有以前这么卡了,还是同一台电脑surface pro4, 试了一下visual s ...

  8. c# RedisHelper

    使用redis组件如下,至于为什么使用3.9版本,是因为4.0开始商业了,限制了次数 ServiceStack.Common" version="3.9.70"Servi ...

  9. jquery-ui sortable 使用实例

    jquery-ui sortable 使用实例 最近公司需要做任务看板,需要拖拽效果.点击查看效果.由于网站是基于vue的技术栈,最开始找了一个现成的vue封装的拖拽组件:Vue.Draggable, ...

  10. 开源代码分析工具 good

    checkstyle - static code analysis tool for JavaPMD - A source code analyzer