基本概念【入门、 发展简史、核心优势、各版本的含义、特性和优势、JVM、JRE 和 JDK 】(二)-全面详解(学习总结---从入门到深化)(下)

简介: 基本概念【入门、 发展简史、核心优势、各版本的含义、特性和优势、JVM、JRE 和 JDK 】(二)-全面详解(学习总结---从入门到深化)

基本概念【入门、 发展简史、核心优势、各版本的含义、特性和优势、JVM、JRE 和 JDK 】(二)-全面详解(学习总结---从入门到深化)(上):https://developer.aliyun.com/article/1420250


Java 开发环境搭建



我们工作和学习,以 JAVA8 为主。当然,也可以使用 8 以上的其他版本。


JDK 下载和安装


· 下载 JDK


           www.oracle.com/technetwork/java/javase/downloads/index.html

         视频内容:


· 安装 JDK


           1. 选择 JDK 安装目录,采用默认即可(如果一定要自定义,不要包含中文路径)

          视频内容:


JDK 环境变量的配置



1. path 是一个常见的环境变量,它告诉系统除了在当前目录下寻找此程序外,还可以到path 指定的目录下寻找。


2. JAVA_HOME

       (1) 为以后其他软件寻找 JDK 做准备!(一般建议进行配置)


3. classpath 不需配置!

       JDK1.5 以上版本,JRE 会自动搜索当前路径下的类文件及相关 jar 文件。


测试 JDK 安装成功


在窗口中输入命令“java -version ”。出现如下结果,则说明 JDK 安装成功。


openJDK 和 JDK 收费问题


2019 年后,JDK8 后续更新的版本就开始收费了。但是,主要针对的是企业用户,对于个人学习者没有任何影响。


由于 JAVA 虚拟机的规范是开放的,任何人都可以去实现它。我们常用的 JDK 只是oracle 公司的一种具体实现,其他公司甚至个人也可以根据规范自己开发。常见的 JDK 有如下几种:


       1. oracle JDK

       2. open JDK

               免费的开源实现,以 GPL License 发布,很多 Linux 发行版中都会包含 Open JDK

       3. IBM、亚马逊等大公司有自己的 JDK



各种开源的 JDK 版本


开发第一个 Java 程序


·使用记事本,编写代码

public class Welcome{
    public static void main(String[] args){
        System.out.println("Hello world!");
    }
}


可在 d 盘下建立文件夹 mycode,用于保存学习的代码。保存路径建议为:”d:/mycode”。保存为:Welcome.java (文件名必须为 Welcome,大小写也必须一致)。


· 中文问题:


       如果代码中有中文,则使用记事本保存时,选择:


菜鸟雷区

 代码中的引号、分号必须为英文引号和分号,不能是中文全角的引号和分号。

 注意大小写。


·编译(编译器创建 class 字节码文件)


打开命令行窗口,进入 Java 文件所在目录;执行命令:javac Welcome.java,生成

class 文件。


·解释并运行阶段


执行:”java Welcome”(就是运行编译生成的 Welcome.class),输出执行结果。


第一个程序常见错误



常见问题-1:提示“javac 不是内部或外部命令……”

图 1-22 常见错误-1


出错原因:Path 变量配置错误导致没有找到 javac 命令


解决方案: 细心重新设置 Path,配置完成后需要重新输入 cmd 打开命令行窗口。


 常见问题-2:文件夹中可以看到 Welcome.java 文件,在编译时出现’javac 找不

到文件……’

图 1-23 常见错误-2


出错原因:可能是操作系统显示设置的问题,隐藏了文件的扩展名


解决方案:打开我的电脑窗口,选择【组织】==>【文件夹和搜索选项】==>【查看】,图 1-24 所示,去掉“隐藏已知文件夹类型的扩展名”复选框中的对勾,看到文件的实际名称为 Welcome.java.txt,将后缀后.txt 去掉。

图 1-24 常见问题-2 解决方案


常见问题-3:NoSuchMethodError:main


   出错原因:找不到 main 方法,应该是 main 方法书写有误。


  解决方案:检查 public static void main(String [] args){}是否有误。


碰到错误、碰到异常,要和看到美女帅哥那样兴奋! 你解决的每一个错误,都是你提高的阶梯!

所谓编程经验很大程度就是指“调错的经验”。


第一个 Java 程序的总结和提升



1. Java 对大小写敏感。

2. 关键字 class 的意思是类。Java 是面向对象的语言,所有代码必须位于类里面。

3. 源文件编译后,得到相应的字节码文件,编译器为每个类生成独立的字节码文件。

4. main 方法是 Java 应用程序的入口方法,格式固定:

                       public static void main(String[] args) {…}

5. 一个源文件可以包含多个类。

6. 每个语句必须以分号结束,回车不是语句的结束标志,所以一个语句可以跨多行。


最常用 DOS 命令


磁盘操作系统(Disk Operating System),是早期个人计算机上的一类操作系统。


常用命令:

常用命令 命令描述
cd .. 进入父目录
dir 查看本目录下的文件和子目录列表
cls  清除屏幕命令
cd 目录路径  进入一个目录
上下键  查找敲过的命令
Tab 键  自动补齐命令


常用 Java 开发工具


入门学习时,进行简单的 Java 程序编写,我们可以使用文本编辑器,比如:记事本。

但是,记事本功能不够强大,我们可以考虑使用“更加强大的记事本”,常见的有如下三种软件: Notepad++     Sublime     EditPlus

在我们真正学习开发中,包括以后在企业中从事软件开发时,一般使用集成开发环境

(IDE)。


 IDEA 官方网址:http://www.jetbrains.com/idea/

 VS Code 官方网址:https://code.visualstudio.com/

 eclipse 官方网址:http://www.eclipse.org


小童建议:

对于 IDE 的选用,真的是无所谓的,大家不用太过纠结。

目录
相关文章
|
2月前
|
缓存 算法 Java
JVM知识体系学习六:JVM垃圾是什么、GC常用垃圾清除算法、堆内存逻辑分区、栈上分配、对象何时进入老年代、有关老年代新生代的两个问题、常见的垃圾回收器、CMS
这篇文章详细介绍了Java虚拟机(JVM)中的垃圾回收机制,包括垃圾的定义、垃圾回收算法、堆内存的逻辑分区、对象的内存分配和回收过程,以及不同垃圾回收器的工作原理和参数设置。
72 4
JVM知识体系学习六:JVM垃圾是什么、GC常用垃圾清除算法、堆内存逻辑分区、栈上分配、对象何时进入老年代、有关老年代新生代的两个问题、常见的垃圾回收器、CMS
|
2月前
|
存储 SQL 小程序
JVM知识体系学习五:Java Runtime Data Area and JVM Instruction (java运行时数据区域和java指令(大约200多条,这里就将一些简单的指令和学习))
这篇文章详细介绍了Java虚拟机(JVM)的运行时数据区域和JVM指令集,包括程序计数器、虚拟机栈、本地方法栈、直接内存、方法区和堆,以及栈帧的组成部分和执行流程。
36 2
JVM知识体系学习五:Java Runtime Data Area and JVM Instruction (java运行时数据区域和java指令(大约200多条,这里就将一些简单的指令和学习))
|
2月前
|
缓存 Java Maven
java: 警告: 源发行版 11 需要目标发行版 11 无效的目标发行版: 11 jdk版本不符,项目jdk版本为其他版本
如何解决Java项目中因JDK版本不匹配导致的编译错误,包括修改`pom.xml`文件、调整项目结构、设置Maven和JDK版本,以及清理缓存和重启IDEA。
50 1
java: 警告: 源发行版 11 需要目标发行版 11 无效的目标发行版: 11 jdk版本不符,项目jdk版本为其他版本
|
2月前
|
Java 应用服务中间件 程序员
JVM知识体系学习八:OOM的案例(承接上篇博文,可以作为面试中的案例)
这篇文章通过多个案例深入探讨了Java虚拟机(JVM)中的内存溢出问题,涵盖了堆内存、方法区、直接内存和栈内存溢出的原因、诊断方法和解决方案,并讨论了不同JDK版本垃圾回收器的变化。
32 4
|
2月前
|
Java 关系型数据库 MySQL
【编程基础知识】Eclipse连接MySQL 8.0时的JDK版本和驱动问题全解析
本文详细解析了在使用Eclipse连接MySQL 8.0时常见的JDK版本不兼容、驱动类错误和时区设置问题,并提供了清晰的解决方案。通过正确配置JDK版本、选择合适的驱动类和设置时区,确保Java应用能够顺利连接MySQL 8.0。
193 1
|
2月前
|
Arthas 监控 Java
JVM知识体系学习七:了解JVM常用命令行参数、GC日志详解、调优三大方面(JVM规划和预调优、优化JVM环境、JVM运行出现的各种问题)、Arthas
这篇文章全面介绍了JVM的命令行参数、GC日志分析以及性能调优的各个方面,包括监控工具使用和实际案例分析。
51 3
|
2月前
|
SQL 缓存 Java
JVM知识体系学习三:class文件初始化过程、硬件层数据一致性(硬件层)、缓存行、指令乱序执行问题、如何保证不乱序(volatile等)
这篇文章详细介绍了JVM中类文件的初始化过程、硬件层面的数据一致性问题、缓存行和伪共享、指令乱序执行问题,以及如何通过`volatile`关键字和`synchronized`关键字来保证数据的有序性和可见性。
31 3
|
2月前
|
缓存 前端开发 Java
JVM知识体系学习二:ClassLoader 类加载器、类加载器层次、类过载过程之双亲委派机制、类加载范围、自定义类加载器、编译器、懒加载模式、打破双亲委派机制
这篇文章详细介绍了JVM中ClassLoader的工作原理,包括类加载器的层次结构、双亲委派机制、类加载过程、自定义类加载器的实现,以及如何打破双亲委派机制来实现热部署等功能。
51 3
|
2月前
|
存储 Java
JVM知识体系学习四:排序规范(happens-before原则)、对象创建过程、对象的内存中存储布局、对象的大小、对象头内容、对象如何定位、对象如何分配
这篇文章详细地介绍了Java对象的创建过程、内存布局、对象头的MarkWord、对象的定位方式以及对象的分配策略,并深入探讨了happens-before原则以确保多线程环境下的正确同步。
57 0
JVM知识体系学习四:排序规范(happens-before原则)、对象创建过程、对象的内存中存储布局、对象的大小、对象头内容、对象如何定位、对象如何分配
|
2月前
|
小程序 Oracle Java
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
这篇文章是关于JVM基础知识的介绍,包括JVM的跨平台和跨语言特性、Class文件格式的详细解析,以及如何使用javap和jclasslib工具来分析Class文件。
49 0
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用