JAVA初探

JAVA初探

Java具有可移植性,一次编写,到处运行

简单、面向对象、可移植性、高性能、分布式(URL)、动态性(反射)、多线程、安全性、健壮性

Java的工作方式

源代码

使用既定协议创建一个源文件,即用Java语言写实现功能的代码

编译器

编译你写的文件,它会检查你文件中的错误,直到你修改到它认为可以编译时,将你的代码进行编译

输出

编译器根据你写的文件,编译为java字节码输出,这种字节码可以在任何能够运行java语言的设备上使用。

虚拟机

读取并运行你的字节码,其他人的电子设备中有一个用软件实现的java虚拟机(JVM),对你的字节码进行读取。


当你写好源代码,保存为.java文件后,运行javac(编译器应用)编译你的文件,如果没有错误,将会得到字节码组成的.class文件并输出。.class文件在你启用虚拟机后,虚拟机把该文件转换为底层平台理解的某种代码,运行实现你的程序。

Java简史

Java于1996年1月23日首次发布,也有人说这是Java从之前的困境解脱出来。时至今日,Java语言一直不断发展,Java的API也大幅扩展。所以有较老的Java代码也有较新的Java代码,但他们都可以在JVM上运行,这是Java的向后兼容性,Java也因此而闻名

Java的诞生离不开C语言和C++,C++是在C语言的基础上改造的,后来 Sun 公司又对 C++ 进行改写,产生了 Java。也可以说Java源自于C和C++。

JVM:Java的虚拟机(Java Virtual Machine)即Java实际运行机器。它可以在代码运行时优化代码,所以你写的代码可能性能不高,但它可以非常快的创建。

Java是在JVM虚拟机上运行的,编译后产生.class中间字节码文件运行在Java虚拟机上,经过解释才放到真实机器上运行的。而C/C++是CPU直接运行的,直接运行在机器上。所以运行速度C/C++(.exe)>java(.class)>JVM>机器。尽管Java语言的运行速度不是最快,但人们认为它与C和Rest等语言的速度不相上下,而且比大多语言的速度还要快。不过与C和Rest相比,Java需要大量内存。

Java版本的命名约定很混乱,有JDK1.0、 1.2、 1.3、 1.4,然后到2SE 5.0、 Java6、 Java7、 Java8······。技术上讲,Java SE 5.0实际上就是Java 1.5。同样的,6(1.6)、7(1.7)和8(1.8)也是如此,6就是Java 1.6,7对应Java 1.7,8对应Java 1.8。理论上,Java仍处于1.x版本,因为新版本是向后兼容的,所有版本最终都能与1.0兼容。
不过,版本号与所有人使用的版本名不同,这会让人有些困惑,所以从Java9开始,之后的官方版本号只有数字,而没有前面的“1”。也就是说,Java9就是版本9,而不是版本1.9。从2017年9月发布Java9以来,每6个月就会发布一个Java版本,会有一个新的“主”版本号!

Java三大版本

JavaSE:标准版(桌面程序,控制台开发······)

JavaME:嵌入式开发(手机,小家电······)卒

JavaEE:E企业级开发(web端,服务器开发······)

JDK、JRE、JVM

JDK(Java Development Kit) 是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。
JDK是java开发工具包,基本上每个学java的人都会先在机器 上装一个JDK,那他都包含哪几部分呢?在目录下面有 六个文件夹、一个src类库源码压缩包、和其他几个声明文件。其中,真正在运行java时起作用的 是以下四个文件夹:bin、include、lib、 jre。有这样一个关系,JDK包含JRE,而JRE包 含JVM。

  bin:最主要的是编译器(javac.exe)
  include:java和JVM交互用的头文件
  lib:类库
  jre:java运行环境

(注意:这里的bin、lib文件夹和jre里的bin、lib是 不同的)

总的来说JDK是用于java程序的开发,而jre则是只能运行class而没有编译的功能。

JRE(Java Runtime Environment,Java运行环境),包含JVM标准实现及Java核心类库。JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器)
JRE是指java运行环境。光有JVM还不能成class的 执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。 (jre里有运行.class的java.exe)
JRE ( Java Runtime Environment ),是运行 Java 程序必不可少的(除非用其他一些编译环境编译成.exe可执行文件……),JRE的 地位就象一台PC机一样,我们写好的Win64应用程序需要操作系统帮 我们运行,同样的,我们编写的Java程序也必须要JRE才能运行。

JVM(Java Virtual Machine),即java虚拟机, java运行时的环境,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。针对java用户,也就是拥有可运行的.class文件包(jar或者war)的用户。里面主要包含了jvm和java运行时基本类库(rt.jar)。rt.jar可以简单粗暴地理解为:它就是java源码编译成的jar包。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。

三者联系
JVM不能单独搞定class的执行,解释class的时候JVM需要调用解释所需要的类库lib。在JDK下面的的jre目录里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。JVM+Lib=JRE。总体来说就是,我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。

三者区别
a.JDK和JRE区别:在bin文件夹下会发现,JDK有javac.exe而JRE里面没有,javac指令是用来将java文件编译成class文件的,这是开发者需要的,而用户(只需要运行的人)是不需要的。JDK还有jar.exe, javadoc.exe等等用于开发的可执行指令文件。这也证实了一个是开发环境,一个是运行环境。
b.JRE和JVM区别:JVM并不代表就可以执行class了,JVM执行.class还需要JRE下的lib类库的支持,尤其是rt.jar。

安装开发环境

卸载JDK

  1. 删除java的安装目录
  2. 删除JAVA_HOME
  3. 删除path下关于Java的目录
  4. java -version

安装JDK

  1. 百度搜索JDK8,找到下载地址

  2. 同意协议

  3. 下载对应的版本

  4. 双击安装JDK

  5. 记住安装的路径

  6. 配置环境变量JAVA_HOME

    ​ path中要配置%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin

  7. 测试JDK是否安装成功cmd :Java -version

安装Notepad++

Java代码结构

源文件source file 类class 方法method (三者为包含关系)

源文件中有类,类中有方法

源文件中有什么

源文件(.java)通常包含一类定义,类表示程序的一部分,必须放在大括号中

定义一个Dog类

public class Dog{
    
}

类中有什么

一个类中有一个或多个方法,方法必须放在类的申明中,也就是必须放在类的大括号内

在Dog类中申明一个bark方法,bark方法实现了狗叫的指令

public class Dog{
 	void bark(){
        
    }   
}

方法中有什么

在方法的大括号中编写这个方法如何实现的指令,方法的代码实际上是一组语句。方法就好比一个函数,在方法里面写出自变量和逻辑。

在bark方法里面写出狗叫的逻辑

public class Dog{
 	void bark(){
 		statement1;
        statement2;  
    }   
}

刨析

JVM开始运行时,它会寻找你在命令行提供的类,然后开始寻找一个专门编写的方法,形式如下:

public static void main (String[] args){
    //your code goes here
}

接下来,JVM运行main方法的两个大括号之间的所有代码,每个Java应用必须至少有一个类,并且至少有一个main方法,但并不是每个类都有main方法,而是每个应用都得有一个main方法。

public class MyFirstApp{
    public static void main (String[] args){
        System.out.print("Hello World")
    }
}

main方法中可以做什么?

做一些事:声明、赋值、方法调用等

反复的做一些事:循环,for和while

在某个条件下做一些事:分支,if/else测试


操作:用记事本完成hello world的输出

  1. 新建一个文件夹,存放代码

  2. 新建一个java文件

  3. 编写代码

public class helloworld{
    public static void main (String[] args){
        System.out.print("Hello World")
    }
}
  1. 从文件保存地址进入控制台
javac helloworld.java
  1. 编译生成helloworld.class文件
java helloworld
  1. 在控制台输出

Java程序运行机制

编译型

解释型

IDEA安装

posted @ 2024-05-27 04:25  冬将尽,春可期  阅读(4)  评论(0编辑  收藏  举报