在走进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. SqlServer Bug:复制架构更改参数(replicate_ddl)无效

    原文:SqlServer Bug:复制架构更改参数(replicate_ddl)无效 最近测试可更新订阅的架构更改问题,发现了一个 bug. 在复制中,当在发布数据库对发布数据库进行架构更改时,结构自 ...

  2. sklearn文本特征提取——TfidfVectorizer

    什么是TF-IDF IF-IDF(term frequency-inverse document frequency)词频-逆向文件频率.在处理文本时,如何将文字转化为模型可以处理的向量呢?IF-ID ...

  3. Qt中加载Libevent静态库(通过reimp和rs两条语句将lib转为a)

    文章来源:http://blog.sina.com.cn/s/blog_731bf4c90102wnpr.html 本文仅是个人经验总结,若有错误欢迎指教! 最近要做一个跨平台的项目,同时也涉及到网络 ...

  4. SQL数据库连接池与C#关键字return

    SQL数据库连接池: 先前做的一个Sharepoint项目,在上线后的不久,最近一直出现间歇性访问缓慢问题Sharepoint特性问题,并分析了其数据库服务器,发现所耗内存已经达到了97%. 所以断定 ...

  5. NSmutableArray 的实现原理机制

    古老的C数组: 优点:查询速度很快,直接通过下表找到对应的值 缺点:修改.删除数据很慢,需要移动基于所有的其他的元素   插入和删除一个元素,需要移动后面所有的元素 改进的目标:实现快速增加,删除 N ...

  6. QT使用MySql的配置(使用addLibraryPath载入插件),编译QT的MySql驱动问题及解决方案(自己使用libmysql.lib进行编译mysql.pro,万不得已可以查看Makefile.Debug以解决问题)

    2010/04/23:Fixes : 更新批处理,以兼容WIN7. 第一次系统地玩QT,于是诞生了此预备式: [QT版本4.6.0(VS2008编译版),开发平台推荐使用Qt Creator(最新1. ...

  7. vmware linux虚拟机忘记密码怎么办

    你又忘了root密码??? 针对好多好多同学经常忘记root密码...这里给你整理怎么重置root密码!! 重启 Linux 系统主机并出现引导界面时,按下键盘上的 e 键进入内核编辑界面 在 lin ...

  8. java集合框架collection(6)继承结构图

    根据<java编程思想>里面的说法,java集合又叫容器,按照单槽和双槽分为两类,Collection和Map,这两个都是接口. 一.Collection Collection下面又分了三 ...

  9. 15 BOM的介绍

    avaScript基础分为三个部分: ECMAScript:JavaScript的语法标准.包括变量.表达式.运算符.函数.if语句.for语句等. DOM:文档对象模型,操作网页上的元素的API.比 ...

  10. JAVA复习笔记01

    学了一学期的JAVA,临近期末,整理了一些JAVA考试中需要掌握的点,记录在这里. 1.编译多个JAVA文件,运行程序 (1) javac .java .java java Main (2) java ...