在走进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. android中优雅实现recyclerview

    在慕课网上看了Abner_泥阿布老师不一样的RecyclerView优雅实现复杂列表布局这个视频课程,本人在Ubuntu16.04LTS下使用android studio2.2.3按照老师讲解写的代码 ...

  2. Vm安装

      说明:都是默认安装,并不需要繁琐设置,所以没有文字说明

  3. storm(一)

    Storm 一个用来实时计算的流框架,具有高可用,低延迟,数据不丢失,分布式的特点 storm 处理数据的方式是基于消息的流水线处理,因此特别适合无状态的计算,也就是说计算单元依赖的数据全部在接受的消 ...

  4. Android实现dialog时候弹出软键盘dialog移位问题

    Window win = getWindow(); WindowManager.LayoutParams params = win.getAttributes(); win.setSoftInputM ...

  5. 怎样让窗口不显示在任务栏和ALT+TAB中(隐藏窗口再嵌套,几乎是万能的办法)

    之前想弄个像QQ旋风那样的悬浮窗口,就研究了下怎么让窗口不显示在任务栏中,方法其实很简单就是将窗口的扩张属性设置成WS_EX_TOOLWINDOW,MSDN中对该属性有详细介绍,代码如下: ::Set ...

  6. MAC和PHY的区别(网线上传递的是模拟信号)

    一块以太网网卡包括OSI(开方系统互联)模型的两个层.物理层和数据链路层.物理层定义了数据传送与接收所需要的电与光信号.线路状态.时钟基准.数据编码和电路等,并向数据链路层设备提供标准接口.数据链路层 ...

  7. SYN6107型 GPS北斗双模子钟

    SYN6107型 GPS北斗双模子钟 产品概述 SYN6107型GPS北斗双模子钟是由西安同步电子科技有限公司精心设计.自行研发生产的一套以接收北斗卫星信号的子钟,从北斗地球同步卫星上获取标准时钟信号 ...

  8. Libra 加密稳定币:Facebook的"野心"?

    2008年11月1日,有一个传说叫中本聪的日裔美国人,发表了一篇名为<比特币:一种点对点式的电子现金系统>的论文.2009年,比特币出世,从此开启了电子货币这个收割机器,全世界的韭菜都是一 ...

  9. Tido 习题-二叉树-区间查询

    题目描述 食堂有N个打饭窗口,现在正到了午饭时间,每个窗口都排了很多的学生,而且每个窗口排队的人数在不断的变化.现在问你第i个窗口到第j个窗口一共有多少人在排队? 输入 输入的第一行是一个整数T,表示 ...

  10. Appium+python自动化(十)- 元素定位秘籍助你打通任督二脉 - 上卷(超详解)

    简介 你有道灵光从天灵盖喷出来你知道吗,年纪轻轻就有一身横练的筋骨,简直百年一见的练武奇才啊,如果有一天让你打通任督二脉,那还不飞龙上天啊.正所谓我不入地狱谁入地狱,警恶惩奸维护世界和平这个任务就交个 ...