首页 > 编程语言 >Java-第一天(初始java)

Java-第一天(初始java)

时间:2023-07-10 22:11:12浏览次数:46  
标签:JRE Java 字节 JVM java class 初始

在正式学习Java之前,我们可以简单了解下Java进程......也可忽略喔

一、Java发展历史

Java是世界上使用最广泛的编程语言之一。Java最初由Sun Microsystems在1990年代开发,用于开发从Web应用程序到移动应用程序到批处理应用程序的所有内容。Java最初是一种纯粹的面向对象的语言,但现在已经发展成为一种多范例语言,可以高度适应任何情况。拥有庞大的开发人员社区和支持库,Java是开发几乎所有类型的应用程序的理想选择。

Java是最初由开发James Gosling(詹姆斯·高斯林,他被称为Java编程语言之父)在Sun Microsystems公司(现已经被Oracle收购),并于1995年发布了作为Sun公司的一个核心组成部分Java平台。

James Gosling(詹姆斯·高斯林),Mike Sheridan(迈克·谢里丹)和Patrick Naughton(帕特里克·诺顿)于1991年6月启动了Java语言项目。Java最初是为交互式电视设计的,但在当时的数字有线电视行业来说太先进了。该语言最初是在James Gosling(詹姆斯·高斯林)办公室外的一棵橡树之后被称为Oak的。后来,该项目以Green命名,并最终从Java coffee(印度尼西亚的一种咖啡)重命名为Java

Java的创始人:James Gosling(詹姆斯·高斯林)

 

OK,现在我理解为你已了解了Java发展史啦。接下来我们继续

正式进入第一天的学习计划啊,可以的话再评论区留下你的宝贵姓名,让博主小陈记住你

 

二、Java概述

1、何为编程
编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。

为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算机之间交流的过程就是编程。

2、什么是Java

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 

3、JVM、JRE、JDK三者联系
JVM
JVM(Java Virtual Machine),即java虚拟机,java运行时的环境,JVM是一种用于计算设备的规范,它是一个虚构的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。针对java用户,也就是拥有可运行的.class文件包(jar包或war包)的用户,里面主要包含了JVM的java的运行时基本类库(rt.jar)。该类库可以理解为:他就是有java源码编译成的jar包。java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是java的跨平台性,"一次编译,处处运行";

JRE

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才能运行;

JDK
Java Development Kit是提供给Java开发人员使用的,其中包含了Java的开发工具,也包括了JRE。所以安装了JDK,就无需再单独安装JRE了。其中的开发工具:编译工具(javac.exe),打包工具(jar.exe)等

联系
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的系统调用。

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

 

 

4、Java语言有哪些优点

简单易学(Java语言的语法与C语言和C++语言很接近)

面向对象(封装,继承,多态)

平台无关性(Java虚拟机实现平台无关性)

支持网络编程并且很方便(Java语言诞生本身就是为简化网络编程设计的)

支持多线程(多线程机制使应用程序在同一时间并行执行多项任)

健壮性(Java语言的强类型机制、异常处理、垃圾的自动收集等)

安全性

5、什么是字节码?采用字节码的好处又是什么?

字节码:Java源代码经过虚拟机编译器编译后产生的文件(即扩展为.class的文件),它不面向任何特定的处理器,只面向虚拟机。

采用字节码的好处:Java语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以Java程序运行时比较高效,而且,由于字节码并不专对一种特定的机器,因此,Java程序无须重新编译便可在多种不同的计算机上运行。

6、Java编译器与解释器

编译器:将Java源文件(.java文件)编译成字节码文件(.class文件,是特殊的二进制文件,二进制字节码文件),这种字节码就是JVM的“机器语言”。javac.exe可以简单看成是Java编译器。

解释器:是JVM的一部分。Java解释器用来解释执行Java编译器编译后的程序。java.exe可以简单看成是Java解释器。

注意:通常情况下,一个平台上的二进制可执行文件不能在其他平台上工作,因为此可执行文件包含了对目标处理器的机器语言。而Class文件这种特殊的二进制文件,是可以运行在任何支持Java虚拟机的硬件平台和操作系统上的

 

标签:JRE,Java,字节,JVM,java,class,初始
From: https://www.cnblogs.com/cyang-vip/p/17540794.html

相关文章

  • ssm框架使springmvc放行资源(java配置类)
    在springmvc中,如果配置了拦截所有请求交给springmvc处理,会出现一些静态web资源加载不出来的情况,或者想放行指定web资源可以通过修改通过修改配置达到相应目的,这里使用覆写WebMvcConfigurationSupport中的方法作介绍。@ConfigurationpublicclassSpringMvcSupportextendsWeb......
  • 算法细节系列(1):Java swap
    算法细节系列(1):Javaswap问题在C++中,swap算法可以用指针来实现,因此在Java中,如果采用如下代码来对两个数字进行交换时,也不会影响两个对象的值。publicclassTestSwap{publicstaticvoidmain(String[]args){inta=2;intb=3;System.out.prin......
  • Java图片加水印
    分为文字水印和透明图片水印packagecom.qms.report.util;importjavax.imageio.ImageIO;importjava.awt.*;importjava.awt.image.BufferedImage;importjava.io.File;importjava.io.IOException;publicclassImageWatermark{/***@paramwaterMarkType......
  • 每日汇报 第三周第二天 JAVA中的异常处理
    今日所学:掌握什么是异常;区分运行时异常和非运行时异常;掌握try、catch、finally后面代码块发挥的作用;掌握运用try-catch-finally捕获异常;掌握如何运用throws关键字在方法上抛出异常;掌握使用throw关键字为异常创建对象,进而主动印发某种异常明日计划:JAVA中的枚举与泛型......
  • java内存问题排查
    1.查看进程  输入:jps-v  输出:1jar-Xms2g-Xmx2g-XX:SurvivorRatio=4-XX:MetaspaceSize=256M-XX:MaxMetaspaceSize=256M-XX:MaxDirectMemorySize=256M-Dfile.encoding=UTF-8-Duser.timezone=GMT+08  可以查看机器上的java进程,1是进程ID,jar是进程名称,后面是一......
  • java串口通信
    java串口通信importjava.io.*;importjava.util.*;importgnu.io.*;publicclassSerialTestimplementsSerialPortEventListener{SerialPortserialPort;//串口名称privatestaticfinalStringPORT_NAME="/dev/ttyUSB0";//波特率priv......
  • JAVA集成velocity实现对已有模板替换(占位符变量)替换
      平时我们如果有一些简单的模板替换需求,比如有个txt文件,或者代码生成模板文件要根据传入的变量替换成具体的值就可以使用这个框架 依赖<dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId>......
  • java类和对象学习总结
    当一个引用赋值为null的时候,就代表这个引用不指向任何的对象引用不能指向引用,只能说引用指向了另一个引用的对象.一个引用不能指向多个对象this引用的学习:代表的是当前对象的引用,每一个成员方法的第一个参数默认是thisthis.year this.month   加上this代表给当前的对象......
  • JavaScript加密:常见加密种类、优缺点和代码示例
    当涉及到JavaScript加密时,有多种加密算法和技术可供选择。下面我将列举一些常见的加密种类、它们的优缺点,并提供一些代码案例作为参考。对称加密算法:对称加密算法使用相同的密钥进行加密和解密。常见的对称加密算法包括AES(AdvancedEncryptionStandard)和DES(DataEncryptionS......
  • Java实现浏览器端大文件分片上传实例
    ​ 上周遇到这样一个问题,客户上传高清视频(1G以上)的时候上传失败。一开始以为是session过期或者文件大小受系统限制,导致的错误。查看了系统的配置文件没有看到文件大小限制,web.xml中seesiontimeout是30,我把它改成了120。但还是不行,有时候10分钟就崩了。同事说,可能是客户这里......