JDK与JRE的区别

合集下载

简述jre与jdk的区别

简述jre与jdk的区别

简述jre与jdk的区别少同学初次安装JDK后,会发现电脑里会有两套JRE:一套位于\jre;另外一套位于 C:\Program Files\Java\j2re1.4.1_01 目录下后面这套比前面那套少了Server端的Java虚拟机。

那么JDK和JRE各有什么作用,区别在哪呢?下面是店铺为你整理的简述jre与jdk的区别,供大家阅览!简述jre和jdk的区别什么是JREJRE(Java Runtime Environment,Java运行时环境),包含了java虚拟机、java基础类库。

是使用java语言编写的程序运行所需要的软件环境。

它相当于操作系统部分,提供了Java程序运行时所需要的基本条件和许多Java基础类,例如,IO类、GUI控件类、网络类等。

JRE是提供给普通用户使用的,如果你只想运行别人开发好的Java程序,那么,你的计算机上必须且只需安装JRE。

什么是JDKJDK(Java Development Kit,Java开发工具包),它包含编译工具、解释工具、文档制作工具、打包工具多种与开发相关的工具,是提供给Java开发人员使用的。

JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。

总结初学者学习和使用Java语言时,首先必须下载和安装JDK。

JDK中已经包含了JRE部分,初学者安装JDK后不必再去下载和安装JRE了。

如果你需要运行java程序,只需安装JRE就可以了。

如果你需要编写java程序,需要安装JDK。

JDK,JRE,JVM之间的区别JDK, JRE和JVM是java编程语言的核心概念。

他们看起来有点相似。

作为一个编程者我们似乎也并不是很关心这个概念。

但是她们确实是有区别的,并且他们分别基于不同的目的的。

本文将会分别解释这三个概念,并且说明他们之间的不同点。

jdk的组成

jdk的组成

jdk的组成JDK(Java Development Kit)是Java开发工具包的缩写,是Java 平台的核心组成部分。

它提供了开发和运行Java应用程序所需的各种工具和资源。

JDK主要由以下几个组成部分构成。

1. Java编译器(javac):Java编译器是JDK的核心组件之一,它将Java源代码编译为字节码文件(.class文件),以便在Java虚拟机(JVM)上运行。

2. Java运行时环境(JRE):JRE是Java应用程序的运行环境,它包含了Java虚拟机(JVM)和Java类库,可以执行Java字节码文件。

3. Java虚拟机(JVM):JVM是Java程序的执行引擎,它负责解释和执行Java字节码文件。

JVM是跨平台的,可以在不同的操作系统上运行Java程序。

4. Java类库:Java类库是一组预定义的类和方法,提供了丰富的功能和工具,用于开发Java应用程序。

它包括了各种类,如字符串处理、图形界面、网络通信等,开发人员可以直接使用这些类来简化开发工作。

5. Java工具:JDK还提供了一系列辅助开发的工具,如调试器(jdb)、性能分析器(jconsole)、反编译器(javap)等。

这些工具可以帮助开发人员调试和优化Java应用程序。

6. 文档和示例:JDK附带了丰富的文档和示例代码,开发人员可以查阅文档了解Java语言的各种特性和用法,并参考示例代码进行开发。

JDK的组成部分相互配合,共同构成了一个完整的Java开发环境。

开发人员可以使用JDK来编写、调试和运行Java应用程序,实现各种功能和需求。

无论是初学者还是专业开发人员,都离不开JDK这个强大的工具包。

它不仅提供了开发所需的工具和资源,还为开发人员提供了广阔的创作空间。

通过学习和使用JDK,开发人员可以轻松地构建出高效、可靠的Java应用程序,为用户提供更好的体验。

jdk的组成

jdk的组成

jdk的组成JDK(Java Development Kit)是Java开发工具包的缩写,是一套用于开发Java 应用程序的工具集合。

JDK由多个组成部分组成,包括Java编译器(javac)、Java虚拟机(JVM)、Java运行时环境(JRE)、Java类库和其他工具。

1. Java编译器(javac):Java编译器是JDK的一个重要组成部分,它用于将Java源代码编译为字节码文件。

Java编译器负责检查代码的语法错误和类型错误,并将源代码转换为字节码文件,以供Java虚拟机执行。

2. Java虚拟机(JVM):Java虚拟机是JDK的核心组件之一,它是Java程序的运行环境。

JVM负责解释和执行字节码文件,并在运行时管理内存、垃圾回收和线程等。

JVM允许Java 程序在不同的平台上运行,实现了Java的"一次编写,到处运行"的特性。

3. Java运行时环境(JRE):Java运行时环境包含了Java虚拟机(JVM)和Java类库,用于执行Java程序。

JRE是JDK的一个重要组成部分,开发者可以将其安装在目标系统上,以便于运行已经编译好的Java程序。

4. Java类库:Java类库是JDK的重要组成部分之一,提供了丰富的类和方法,用于简化Java程序的开发。

Java类库包括多个包(package),如ng、java.util等,每个包都包含了相关的类和接口。

开发者可以通过引入相应的包来使用Java类库提供的功能。

5. 开发工具:除了编译器和虚拟机之外,JDK还提供了一些其他的开发工具,用于辅助开发和调试Java程序。

其中包括:- javadoc:用于从源代码生成文档,帮助开发者更好地理解和使用已有的代码。

- jar:用于创建和管理Java的归档文件(JAR文件),方便程序的打包和发布。

- jdb:用于Java程序的调试工具,可以通过命令行界面对程序进行断点调试。

- jps和jstack:用于获取Java进程信息和Java线程栈信息,方便分析程序的运行状况。

报表开发面试问题

报表开发面试问题

报表开发面试问题面试题模块介绍:一、Java 基础JDK 和JRE 有什么区别?== 和equals 的区别是什么?两个对象的hashCode()相同,则equals()也一定为true,对吗?final 在java 中有什么作用?java 中的Math.round(-1.5) 等于多少?String 属于基础的数据类型吗?java 中操作字符串都有哪些类?它们之间有什么区别?String str="i"与String str=new String(“i”)一样吗?如何将字符串反转?String 类的常用方法都有那些?抽象类必须要有抽象方法吗?普通类和抽象类有哪些区别?抽象类能使用final 修饰吗?接口和抽象类有什么区别?java 中IO 流分为几种?BIO、NIO、AIO 有什么区别?Files的常用方法都有哪些?二、容器java 容器都有哪些?Collection 和Collections 有什么区别?List、Set、Map 之间的区别是什么?HashMap 和Hashtable 有什么区别?如何决定使用HashMap 还是TreeMap?说一下HashMap 的实现原理?说一下HashSet 的实现原理?ArrayList 和LinkedList 的区别是什么?如何实现数组和List 之间的转换?ArrayList 和Vector 的区别是什么?Array 和ArrayList 有何区别?在Queue 中poll()和remove()有什么区别?哪些集合类是线程安全的?迭代器Iterator 是什么?Iterator 怎么使用?有什么特点?Iterator 和ListIterator 有什么区别?怎么确保一个集合不能被修改?三、多线程并行和并发有什么区别?线程和进程的区别?守护线程是什么?创建线程有哪几种方式?说一下runnable 和callable 有什么区别?线程有哪些状态?sleep() 和wait() 有什么区别?notify()和notifyAll()有什么区别?线程的run()和start()有什么区别?创建线程池有哪几种方式?线程池都有哪些状态?线程池中submit()和execute()方法有什么区别?在java 程序中怎么保证多线程的运行安全?多线程锁的升级原理是什么?什么是死锁?怎么防止死锁?ThreadLocal 是什么?有哪些使用场景?说一下synchronized 底层实现原理?synchronized 和volatile 的区别是什么?synchronized 和Lock 有什么区别?synchronized 和ReentrantLock 区别是什么?说一下atomic 的原理?四、反射什么是反射?什么是java 序列化?什么情况下需要序列化?动态代理是什么?有哪些应用?怎么实现动态代理?五、对象拷贝为什么要使用克隆?如何实现对象克隆?深拷贝和浅拷贝区别是什么?六、Java Webjsp 和servlet 有什么区别?jsp 有哪些内置对象?作用分别是什么?说一下jsp 的4 种作用域?session 和cookie 有什么区别?说一下session 的工作原理?如果客户端禁止cookie 能实现session 还能用吗?spring mvc 和struts 的区别是什么?如何避免sql 注入?什么是XSS 攻击,如何避免?什么是CSRF 攻击,如何避免?七、异常hrow 和throws 的区别?final、finally、finalize 有什么区别?try-catch-finally 中哪个部分可以省略?try-catch-finally 中,如果catch 中return 了,finally 还会执行吗?常见的异常类有哪些?八、网络http 响应码301 和302 代表的是什么?有什么区别?forward 和redirect 的区别?简述tcp 和udp的区别?tcp 为什么要三次握手,两次不行吗?为什么?说一下tcp 粘包是怎么产生的?OSI 的七层模型都有哪些?get 和post 请求有哪些区别?如何实现跨域?说一下JSONP 实现原理?九、设计模式说一下你熟悉的设计模式?简单工厂和抽象工厂有什么区别?十、Spring/Spring MVC什么是spring?Spring的俩大核心概念Spring框架的设计目标,设计理念,和核心是什么Spring由哪些模块组成?Spring 框架中都用到了哪些设计模式?使用Spring 有哪些方式?spring 支持几种bean 的作用域?spring 自动装配bean 有哪些方式?spring 事务实现方式有哪些?什么是Spring MVC?简单介绍下你对Spring MVC的理解?Spring MVC的主要组件?什么是Spring MVC框架的控制器?MVC是什么?MVC设计模式的好处有哪些Spring MVC常用的注解有哪些?Spring MVC与Struts2区别Spring MVC怎么样设定重定向和转发的?Spring MVC的异常处理?什么是Spring MVC框架的控制器?说一下spring mvc 运行流程?spring mvc 有哪些组件?@RequestMapping 的作用是什么@Autowired 的作用是什么?十一、Spring Boot/Spring Cloud什么是spring boot?为什么要用spring boot?spring boot 核心配置文件是什么?spring boot 配置文件有哪几种类型?它们有什么区别?spring boot 有哪些方式可以实现热部署?jpa 和hibernate 有什么区别?什么是spring cloud?spring cloud 断路器的作用是什么?spring cloud 的核心组件有哪些?十二、Hibernate为什么要使用hibernate?什么是ORM 框架?hibernate 中如何在控制台查看打印的sql 语句?hibernate 有几种查询方式?hibernate 实体类可以被定义为final 吗?在hibernate 中使用Integer 和int 做映射有什么区别?hibernate 是如何工作的?get()和load()的区别?说一下hibernate 的缓存机制?hibernate 对象有哪些状态?在hibernate 中getCurrentSession 和openSession 的区别是什么?hibernate 实体类必须要有无参构造函数吗?为什么?十三、MybatisMyBatis是什么?Mybatis优缺点Hibernate 和MyBatis 的区别为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里?传统JDBC开发存在什么问题?JDBC编程有哪些不足之处,MyBatis是如何解决的?MyBatis和Hibernate的适用场景?MyBatis编程步骤是什么样的?请说说MyBatis的工作原理MyBatis的功能架构是怎样的MyBatis的框架架构设计是怎么样的什么是DBMSMybatis都有哪些Executor执行器?它们之间的区别是什么?Mybatis中如何指定使用哪一种Executor执行器?Mybatis是否支持延迟加载?如果支持,它的实现原理是什么?Mybatis如何执行批量操作当实体类中的属性名和表中的字段名不一样,怎么办Mapper 编写有哪几种方式?什么是MyBatis的接口绑定?有哪些实现方式?使用MyBatis的mapper接口调用时有哪些要求?Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式?简述Mybatis的Xml映射文件和Mybatis内部数据结构之间的映射关系?Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有哪些标签?Mybatis是否可以映射Enum枚举类?简述Mybatis的插件运行原理,以及如何编写一个插件。

Java面试宝典(2020版)

Java面试宝典(2020版)

Java⾯试宝典(2020版)⼀、Java 基础1. JDK 和 JRE 有什么区别?JDK:Java Development Kit 的简称,java 开发⼯具包,提供了 java 的开发环境和运⾏环境。

JRE:Java Runtime Environment 的简称,java 运⾏环境,为 java 的运⾏提供了所需环境。

具体来说 JDK 其实包含了 JRE,同时还包含了编译 java 源码的编译器 javac,还包含了很多 java 程序调试和分析的⼯具。

简单来说:如果你需要运⾏ java 程序,只需安装 JRE 就可以了,如果你需要编写 java 程序,需要安装 JDK。

2. == 和 equals 的区别是什么?== 解读对于基本类型和引⽤类型 == 的作⽤效果是不同的,如下所⽰:基本类型:⽐较的是值是否相同;引⽤类型:⽐较的是引⽤是否相同;代码⽰例:1 String x = "string";2 String y = "string";3 String z = new String("string");4 System.out.println(x==y); // true5 System.out.println(x==z); // false6 System.out.println(x.equals(y)); // true7 System.out.println(x.equals(z)); // true代码解读:因为 x 和 y 指向的是同⼀个引⽤,所以 == 也是 true,⽽ new String()⽅法则重写开辟了内存空间,所以 == 结果为 false,⽽equals ⽐较的⼀直是值,所以结果都为 true。

equals 解读equals 本质上就是 ==,只不过 String 和 Integer 等重写了 equals ⽅法,把它变成了值⽐较。

JDK(javadevelopmentkit)是什么jdk有什么用

JDK(javadevelopmentkit)是什么jdk有什么用

JDK(javadevelopmentkit)是什么jdk有什么⽤JDK是学好Java的第⼀步。

不管是你要学习java编程,还是要搭建jsp web开发环境,或者是android开发环境都离不开它。

什么是jdk?1、jdk是什么呢?jdk的是java development kit的缩写,意思是java程序开发的⼯具包。

也可以说jdk是java的sdk。

JDK是 Java 语⾔的软件开发⼯具包,主要⽤于移动设备、嵌⼊式设备上的java应⽤程序。

JDK是整个java开发的核⼼,它包含了JAVA的运⾏环境,JAVA⼯具和JAVA基础的类库。

JDK(Java Development Kit) 是 Java 语⾔的软件开发⼯具包(SDK)。

SE(J2SE),standard edition,标准版,是我们通常⽤的⼀个版本,从JDK 5.0开始,改名为Java SE。

EE(J2EE),enterprise edition,企业版,使⽤这种JDK开发J2EE应⽤程序,从JDK 5.0开始,改名为Java EE。

ME(J2ME),micro edition,主要⽤于移动设备、嵌⼊式设备上的java应⽤程序,从JDK 5.0开始,改名为Java ME。

没有JDK的话,⽆法编译Java程序,如果想只运⾏Java程序,要确保已安装相应的JRE。

2、先来说⼀下jdk的版本,⼀共有三种,标准版,企业版,移动设备版。

3、不知道⼤家在⽹上看到Java SE 6.0和jdk1.6是不是⼀个头两个⼤呢,其实它们是同⼀个东西。

因为jdk从1.5版本开始就改名为Java SE,我们通常使⽤的都是J2se也就是标准版的jdk。

4、什么是JRE?普通⽤户并不需要安装JDK来运⾏Java程序,⽽只需要安装JRE(Java Runtime Environment)。

⽽程序开发者必须安装JDK 来编译、调试程序。

5、什么是JDK?顾名思义它是给开发者提供的开发⼯具箱,是给程序开发者⽤的。

JavaGuide之Java基本功(一)

JavaGuide之Java基本功(一)

JavaGuide之Java基本功(⼀)Java⼊门1.Java语⾔有哪些特点?简单易学;⾯向对象(封装,继承,多态);平台⽆关性( Java 虚拟机实现平台⽆关性);可靠性;安全性;⽀持多线程;⽀持⽹络编程并且很⽅便( Java 语⾔诞⽣本⾝就是为简化⽹络编程设计的,因此 Java 语⾔不仅⽀持⽹络编程⽽且很⽅便);编译与解释并存;2.关于JVM JDK JREJVMJava虚拟机(JVM)是运⾏Java字节码的虚拟机。

Jvm有针对不同系统的特定实现(windows、linux、macos等),⽬的是使⽤相同的字节码,它们都会给出相同的结果。

什么是字节码?采⽤字节码的好处?在Java中,JVM可以理解的代码就叫做字节码(即扩展名为.class的⽂件),它不⾯向任何特定的处理器,只⾯向虚拟机。

Java通过字节码的⽅式,在⼀定程度上解决了传统解释型语⾔执⾏效率低的问题,同时⼜保留了解释型语⾔可移植的特点。

所以java程序运⾏时⽐较⾼效,⽽且,由于字节码不针对某⼀种特定的机器,因此java⽆需重新编译便可在多种不同操作系统的计算机上运⾏。

java程序从源代码到运⾏的步骤需要格外注意的是.class-->机器码这⼀步。

在这⼀步JVM类加载器⾸先加载字节码⽂件,然后通过解释器逐⾏解释执⾏,这种⽅式的执⾏速度会⽐较慢。

⽽且有些⽅法和代码块是经常被调⽤的(热点代码),所以后⾯引进了JIT编译器,⽽JIT属于运⾏时编译。

当JIT编译器完成第⼀次编译后,其会将字节码对应的机器码保存下来,下次可以直接使⽤。

⽽我们知道,机器码的运⾏效率肯定⾼于java解释器的。

这也解释了我们为什么经常会说java是编译与解释共存的语⾔。

HotSpot 采⽤了惰性评估(Lazy Evaluation)的做法,根据⼆⼋定律,消耗⼤部分系统资源的只有那⼀⼩部分的代码(热点代码),⽽这也就是 JIT 所需要编译的部分。

JVM 会根据代码每次被执⾏的情况收集信息并相应地做出⼀些优化,因此执⾏的次数越多,它的速度就越快。

Java面试题大全及答案

Java面试题大全及答案

Java面试题大全及答案1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?Java虚拟机是一个可以执行Java字节码的虚拟机进程。

Java源文件被编译成能被Java虚拟机执行的字节码文件。

Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。

Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。

2.JDK和JRE的区别是什么?Java运行时环境(JRE)是将要执行Java程序的Java虚拟机。

它同时也包含了执行applet需要的浏览器插件。

Java开发工具包 (JDK)是完整的Java软件开发包,包含了JRE,编译器和其他的工具(比如:JavaDoc,Java调试器),可以让开发者开发、编译、执行 Java应用程序。

3.”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。

Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。

static方法跟类的任何实例都不相关,所以概念上不适用。

4.是否可以在static环境中访问非static变量?static变量在Java中是属于类的,它在所有的实例中的值是一样的。

当类被Java虚拟机载入的时候,会对static变量进行初始化。

如果你的代码尝试不用实例来访问非static的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。

5.Java支持的数据类型有哪些?什么是自动拆装箱?Java语言支持的8中基本数据类型是:byteshortintlongfloatdoublebooleanchar自动装箱是Java编译器在基本数据类型和对应的对象包装类型之间做的一个转化。

java运行环境jre小解

java运行环境jre小解

简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。

SDK 是Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等。

JDK就是Java Development KitJRE是Java Runtime Enviroment是指Java的运行环境,是面向Java程序的使用者,而不是开发者。

如果安装了JDK,会发同你的电脑有两套JRE,一套位于\jre 另外一套位于C:\Program Files\Java\j2re1.4.1_01 目录下,后面这套比前面那套少了Server端的Java虚拟机,不过直接将前面那套的Server端Java虚拟机复制过来就行了。

而且在安装JDK可以选择是否安装这个位于C:\Program Files\Jav a 目录下的JRE。

如果你只安装JRE,而不是JDK,那么只会在C:\Program Files\Java 目录下安装唯一的一套JRE。

JRE的地位就象一台PC机一样,我们写好的Win32应用程序需要操作系统帮我们运行,同样的,我们编写的Java程序也必须要JRE才能运行。

所以当你装完JDK后,如果分别在硬盘上的两个不同地方安装了两套JRE,那么你可以想象你的电脑有两台虚拟的Java PC 机,都具有运行Java程序的功能。

所以我们可以说,只要你的电脑安装了JRE,就可以正确运行Jav a应用程序。

1、为什么Sun要让JDK安装两套相同的JRE?这是因为JDK里面有很多用Java所编写的开发工具(如javac.exe、jar.exe等),而且都放置在\lib\tools.jar 里。

从下面例子可以看出,先将tools.jar改名为tools1.jar,然后运行javac.exe,显示如下结果:Exception in thread "main" ng.NoClassDefFoundError: com/sun/tools/javac /Main 这个意思是说,你输入javac.exe与输入java -cp c:\jdk\lib\tools.jarcom.sun.tools.javac.Main 是一样的,会得到相同的结果。

java中安装jdk和jre(简单了解)

java中安装jdk和jre(简单了解)

java中安装jdk和jre(简单了解)快速了解:JDK是整个Java的核⼼,包括了⼀个Java运⾏时环境(JRE)、Java⼯具以及基本的Java类库。

JDK是Sun公司免费提供给软件⼯程师开发java应⽤程序⼀套开发套件。

简单的说JDK(Java Development Kit)有很多帮助开发⼈员进⾏java开发时所⽤到的⼯具,包括编译、调试、运⾏等等命令。

JRE(Java Run )就是在运⾏java应⽤程序时提供⽀持的环境。

JRE在⼀些操作系统中已经预装了,但是JDK却并不⼀定有安装,毕竟不是个个都是java开发⼈员。

所以我们现在要成为java⼯程师,⾸先得先安装并设置好开发环境。

快速配置:1、在Path编辑后⾯加⼊:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; (注意如果加⼊前最后⾯没有;要加⼊;)2、进⾏新建⼀个CLASSPATH:变量名字:CLASSPATH 变量值:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar3、进⾏新建JAVA_HOME:变量名:JAVA_HOME 变量值:本机jdk的路径,⽐如我:C:\Program Files\Java\jdk-10.0.2轻松了解以及详细配置什么是jdk?JDK是学好Java的第⼀步。

不管是你要学习java编程,还是要搭建jsp web开发环境,或者是android开发环境都离不开它。

jdk是什么呢?jdk的是java development kit的缩写,意思是java程序开发的⼯具包。

也可以说jdk是java的sdk。

先来说⼀下jdk的版本,⼀共有三种,标准版,企业版,移动设备版。

⾸先我们进⼊官⽹进⾏查看第⼀进⾏下载如下:或者百度下载:步骤⼀:当我们没有在主页时候,可以单击oracle进⼊主页步骤⼆:进⾏下载这个Trials and Downloads是测试和下载的意思第三步:进⾏进⼊查找java中的jdk第四步:找下载地址第五步进⼊下载:下载完成第⼆进⾏安装:这⾥有安装提⽰,只需要点下⼀步即可完成后进⾏cmd查询 win+R键进⾏运⾏(win键在Ctrl与Alt中间)进⾏cmd进⼊后输⼊java回车执⾏后会出现很多东西,如下图出现这个表⽰已经安装完成删除操作如果安装过的,可以到系统⾥⾯卸载需要卸载两个即可如图:删除完成再进⾏安装即可;进⾏配置环境:第⼀步:我的电脑右键点击属性第⼆步:⾼级系统设置->环境变量->以下针对没有配置过环境变量的系统:1、在Path编辑后⾯加⼊:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(注意如果加⼊前最后⾯没有;要加⼊;)⾸先我们需要查找Path->编辑(有的系统可能有两种格式)第⼀种格式:第⼆种格式:(两种格式都是差不多,可以根据系统进⾏配置) %JAVA_HOME%\bin%JAVA_HOME%\jre\bin2、进⾏新建⼀个CLASSPATH变量名字:CLASSPATH变量值:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar3、进⾏新建JAVA_HOME变量名:JAVA_HOME变量值是不⼀样的,根据你按照时候进⾏查看(推荐点击浏览⽬录,然后进⼊电脑的系统盘[⼀般为C盘],进⼊后看Program Files这个⽂件下,进⼊java⽂件下,选择jdk⽂件夹即可)也可以直接进⼊系统盘查找jdk复制路径放到变量值即可我的根⽬录如下:C:\Program Files\Java\jdk-10.0.2最后进⾏测试:进⼊cmd命令输⼊javac出现该信息说明已经配置成功提⽰:eclipse出现an error has occurred.see the loh file有些安装后出现问题如图是不是eclipse版本太新引起的,我在更新之后也出现了这样的问题,解决⽅法:1,打开eclipse安装⽬录下的eclipse.ini⽂件;2,打开的⽂本⽂件最后添加⼀⾏--add-modules=ALL-SYSTEM3,保存重新打开Eclipse。

Java虚拟机(JVM)面试题-51道

Java虚拟机(JVM)面试题-51道

4. 说一下 JVM由那些部分组成,运行流程是什么?JVM包含两个子系统和两个组件: 两个子系统为Class loader(类装载)、Execution engine(执行引擎);两个组件为Runtime data area(运行时数据区)、Native Interface(本地接口)。

Class loader(类装载):根据给定的全限定名类名(如:ng.Object)来装载class文件到Runtime data area中的method area。

Execution engine(执行引擎):执行classes中的指令。

Native Interface(本地接口):与native libraries交互,是其它编程语言交互的接口。

Runtime data area(运行时数据区域):这就是我们常说的JVM的内存。

程序计数器(Program Counter Register):当前线程所执行的字节码的行号指示器,字节码解线程A在看直播突然,线程B来了一个视频电话,就会抢夺线程A的时间片,就会打断了线程A,线程A 就会挂起解析栈帧:1. 局部变量表:是用来存储我们临时8个基本数据类型、对象引用地址、returnAddress类型。

(returnAddress中保存的是return后要执行的字节码的指令地址。

)2. 操作数栈:操作数栈就是用来操作的,例如代码中有个 i = 6*6,他在一开始的时候就会进行操作,读取我们的代码,进行计算后再放入局部变量表中去3. 动态链接:假如我方法中,有个 service.add()方法,要链接到别的方法中去,这就是动态链接,存储链接的地方。

4. 出口:出口是什呢,出口正常的话就是return 不正常的话就是抛出异常落一个方法调用另一个方法,会创建很多栈帧吗?答:会创建。

如果一个栈中有动态链接调用别的方法,就会去创建新的栈帧,栈中是由顺序的,一个栈帧调用另一个栈帧,另一个栈帧就会排在调用者下面栈指向堆是什么意思?栈指向堆是什么意思,就是栈中要使用成员变量怎么办,栈中不会存储成员变量,只会存储一个应用地址递归的调用自己会创建很多栈帧吗?答:递归的话也会创建多个栈帧,就是在栈中一直从上往下排下去8. 你能给我详细的介绍Java堆吗?(重点理解)java堆(Java Heap)是java虚拟机所管理的内存中最大的一块,是被所有线程共享的一块内存区域,在虚拟机启动时创建。

解析J2EE、J2SE、J2ME、JDK的区别

解析J2EE、J2SE、J2ME、JDK的区别

解析J2EE、J2SE、J2ME、JDK的区别解析J2EE、J2SE、J2ME、JDK的区别本文向大家简单介绍一下JDK、J2EE、J2SE、J2ME概念及区别,J2EE,J2SE,J2ME是java针对不同的的使用来提供不同的服务,也就是提供不同类型的类库。

Java2平台包括:标准版(J2SE)、企业版(J2EE)和微缩版(J2ME)三个版本J2SE是Java 2 standard edition是Java2的标准版,主要用于桌面应用软件的编程J2EE即Java2 enterprise edition是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统J2ME即Java 2 Micro Edition是Java的微型版,主要应用于嵌入式系统开发,如手机和PDA的编程JDK是Java development toolkit,相当于是Java的库函数,是编译,运行java程序的工具包。

Standard Edition(标准版) J2SE 包含那些构成Java语言核心的类。

比如:数据库连接、接口定义、输入/输出、网络编程Enterprise Edition(企业版) J2EE 包含J2SE 中的类,并且还包含用于开发企业级应用的类。

比如:EJB、servlet、JSP、XML、事务控制Micro Edition(微缩版) J2ME 包含J2SE中一部分类,用于消费类电子产品的软件开发。

比如:呼机、智能卡、手机、PDA、机顶盒他们的范围是:J2SE包含于J2EE中,J2ME包含了J2SE 的核心类,但新添加了一些专有类对于初学者,都是从J2SE入手的。

2.J2EE和J2SE的区别:J2EE是在J2SE的基础上添加了一系列的企业级应用编程接口.J2EE包含有很多的技术!其中有你熟悉的jsp,servlet,jdbc,jme等13中技术!J2EE主要是用来做B/S结构的应用程序!也就是说是基于浏览器和服务器的!J2SE给我的感觉只需要一个容器就够了,J2EE支持分布式组件可以同时存在多个容器1、J2EE到底是什么?J2EE,是sun公司提出的一个标准,符合这个标准的产品叫“实现”;其中你下载的sun公司的J2EE开发包中就有一个这样的“实现”,而jboss,weblogic,websphere都是J2EE 标准的一个“实现”。

java面试题1000道

java面试题1000道

java⾯试题1000道java⾯试题1000道1. JDK与JRE之间的区别答:JDK是java开发⼯具包的⼀个标准,它包含了⼀些⼯具,以及为开发java程序所需要的库,它也包含编译器,调试⼯具。

JRE是java运⾏时环境,它包含在JDK当中,JRE提供必要的库以及JVM,因为这是运⾏java程序所必须的。

2. 什么是java虚拟机答:java虚拟机(java Virturl Machine JVM)是⼀个抽象的机器,⽤于执⾏java字节码,不同的硬件平台JVM是不同的,JVM本⾝是平台相关的,JVM负责加载验证以及执⾏字节码。

3. JVM的内存区域有哪些类型答:在java当中,JVM分配内存给不同的进程、⽅法、还有对象,内存区域划分如下:1. 类加载器:它属于JVM的⼀个组件⽤于加载类⽂件2. 类(⽅法)区:它存储了每个类的结构⽐如运⾏时的常量池,字段和⽅法数据,以及⽅法的代码。

3. 堆:堆是运⾏时创建的,它包含了那些在运⾏时为对象分配的数据。

4. 栈:栈存储局部变量和部分的运⾏时结果,它也有助于⽅法调⽤和返回,每个线程在其线程创建的时候创建⼀个私有的JVM栈。

5. 程序计数器:这个内存区域包含了JVM⽬前正在执⾏的指令地址。

6. 本地⽅法栈:这个区域是为应⽤程序当中所有的本地⽅法所保留的内存区域。

4. 什么是JIT编译器答:JIT全称:just in time,及时的,及时编译器主要⽤于改善java的性能,它默认是开启的,它是编译时更早的处理以便运⾏时更良好的运⾏,java已经通过在JVM当中⼴泛的使⽤JIT编译器。

5. java与其它语⾔不⼀样的地⽅答:java最⼤的特点是它的平台⽆关性,java编译器将java源代码编译为字节码然后由JVM负责解释执⾏,对于世界上绝⼤多数流⾏的平台都有其对应的JVM,java字节码可以运⾏在有JVM⽀持的平台上,其它的语⾔往往需要为特定的平台编译特定的库。

java面试题

java面试题

java⾯试题JAVA基础1、JDK和JRE有什么区别?JRE:java运⾏时环境,包含java虚拟机、java基础类库JDK:java开发⼯具包,它包含了JRE,编译器和其他⼯具如果需要运⾏java程序,只需要安装JRE就可以了。

如果需要编写java程序,需要安装JDK。

JAVA_HOME------>JDK安装⽬录。

2、==和equals的区别是什么?==⽐较的是地址equals⽐较的是两个对象的内容3、两个对象的hashCode()相同,则equals()也⼀定为true对吗?是相同,因为equals()⽐较的是两个对象的内容,hashCode相同说明值相同。

4、final在java中有什么作⽤?final可以修饰类,这样的类不能被继承,⽐如String类final可以修饰⽅法,这样的⽅法不能被重写final可以修饰变量,这样的变量的值不能被修改5、java中的Math.round(-1.5)等于多少?-1Math.round()的返回值类型是longMath.round(11.5f),那么它的返回值类型是int,取值向正⽆穷⽅向取舍Math.round(11.5) --> 12Math.round(-11.5) --> -11Math.round(0.5) --> 1Math.round(-0.5) --> 06、String属于基础的数据类型吗?String是引⽤类型8个基础的数据类型有:byte、shrot、int、long、Boolean、double、float、char7、基本类型与引⽤类型的区别:基本类型只表⽰简单的字符或数字引⽤类型可以是复杂的数据结构8、java中操作字符串有哪些类?它们有什么区别?String:⼀旦被创建,就不能修改它的值适⽤于少量的字符串操作的情况StringBuffer:StringBuffer是线程安全StringBuilder:StringBuilder是线程不安全的运⾏速度⽐StringBuffer快9、String str = "i" 与 String str = new String(i)⼀样吗?不⼀样String str ="i"先去内存中找是否存在“i”这个字符串,若存在,则将地址引⽤,不存在则创建。

《Java基础入门》课后习题及答案

《Java基础入门》课后习题及答案

《Java基础入门》课后习题及答案《Java基础入门》课后习题第1章Java开发入门一、填空题1、Java的三大体系分别是_JavaSE_____、_JavaEE_____、_JavaME_____。

2、Java程序的运行环境简称之为JRE_____。

3、编译Java程序需要使用_javac_____命令。

4、javac.exe和java.exe两个可执行程序存放在JDK 安装目录的bin______目录下。

5、path______环境变量用来存储Java的编译和运行工具所在的路径,而_classpath_____环境变量则用来保存保存Java虚拟机要运行的“.class”文件路径。

二、选择题1、以下选项中,哪些属于JDK工具?(多选)ABCDA、Java编译器B、Java运行工具C、Java文档生成工具D、Java打包工具2、Java属于以下哪种语言?CA、机器语言B、汇编语言C、高级语言D、以上都不对3、下面哪种类型的文件可以在Java虚拟机中运行?DA、.javaB、.jreC、.exeD、.class4、安装好JDK后,在其bin目录下有许多exe可执行文件,其中java.exe命令的作用是以下哪一种?BA、Java文档制作工具B、Java解释器C、Java编译器D、Java启动器5、如果jdk的安装路径为:d:\jdk,若想在命令窗口中任何当前路径下,都可以直接使用javac和java命令,需要将环境变量path设置为以下哪个选项?BA.d:\jdk; B.d :\jdk\bin; C.d:\jre\bin; D.d:\jre;三、问答题1、简述Java的特点。

面向对象、跨平台性、健壮性、安全性、可移植性、多线程性、动态性等。

2、简述JRE与JDK的区别。

JRE(Java Runtime Environment,Java运行时环境),它相当于操作系统部分,提供了Java程序运行时所需要的基本条件和许多Java基础类,例如,IO 类、GUI控件类、网络类等。

Java中JDK和JRE的区别是什么?它们的作用分别是什么?

Java中JDK和JRE的区别是什么?它们的作用分别是什么?

Java中JDK和JRE的区别是什么?它们的作⽤分别是什么?JDK和JRE是Java开发和运⾏⼯具,其中JDK包含了JRE,但是JRE是可以独⽴安装的,它们在Java开发和运⾏的时候起到不同的作⽤~1.JDKJDK是Java Development Kit的缩写,是Java的开发⼯具包,主要包含了各种类库和⼯具,当然也包含了另外⼀个JRE.。

那么为什么要包含另外⼀个JRE呢?⽽且<JDK安装⽬录>/JRE/bin⽬录下,包含有server⼀个⽂件夹~包含⼀个jvm.dll,这说明JDK提供了⼀个虚拟机。

另外,JDK的bin⽬录下有各种Java程序需要⽤到的命令,与JRE的bin⽬录最明显的区别就是JDK⽂件下才有javac,这⼀点很好理解,因为JRE 只是⼀个运⾏环境⽽已,与开发⽆关。

正因为如此,具备开发功能的JDK所包含的JRE下才会同时有server的JVM,⽽仅仅作为运⾏环境的JRE下,只需要server的jvm.dll就够了。

注意:JDK所提供的运⾏环境和⼯具度需要进⾏环境变量的配置以后,才能使⽤,最主要的配置就是把<JDK安装⽬录>/bin⽬录设置为Path环境变量值的⼀部分。

2.JREJRE是Java Runtime Environment的缩写,是Java程序的运⾏环境。

既然是运⾏,当然要包含JVM,也就是所谓的Java虚拟机,还有所以的Java类库的class⽂件,都在lib⽬录下,并且都打包成了jar。

⾄于在Windows上的虚拟机是哪个⽂件呢?就是<JRE安装⽬录>/bin/server中的jvm.dll。

另外,安装JRE的时候安装程序会⾃动把JRE的java.exe添加到了系统变量中。

系统变量Path的最前⾯有%SystemRoot%system32;%SystemRoot%;这样的配置,那样到Windows/system32⽬录下main去看看,会发现⼀个java.exe⽂件。

java初级面试题汇总(附答案)

java初级面试题汇总(附答案)

本面试题分为十八个模块,分别是:Java 基础、多线程、反射、对象拷贝、Java Web 、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、MyBatis、RabbitMQ、Kafka、Zookeeper、MySQL、Redis、JVM,如下图所示:共包含 208 道面试题,本文的宗旨是为读者朋友们整理一份详实而又权威的面试清单,下面一起进入主题吧。

模块一Java 基础1. JDK 和 JRE 有什么区别?• JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境。

• JRE:Java Runtime Environment 的简称,Java 运行环境,为 Java 的运行提供了所需环境。

具体来说 JDK 其实包含了 JRE,同时还包含了编译 Java 源码的编译器 Javac,还包含了很多 Java 程序调试和分析的工具。

简单来说:如果你需要运行 Java 程序,只需安装 JRE 就可以了,如果你需要编写 Java 程序,需要安装 JDK。

2. == 和 equals 的区别是什么?对于基本类型和引用类型 == 的作用效果是不同的,如下所示:• 基本类型:比较的是值是否相同;• 引用类型:比较的是引用是否相同;代码示例:String x = "string";String y = "string";String z = new String("string");System.out.println(x==y); // trueSystem.out.println(x==z); // falseSystem.out.println(x.equals(y)); // trueSystem.out.println(x.equals(z)); // true代码解读:因为 x 和 y 指向的是同一个引用,所以 == 也是 true,而 new String()方法则重写开辟了内存空间,所以 == 结果为 false,而 equals 比较的一直是值,所以结果都为 true。

《Java基础入门》课后习题及答案

《Java基础入门》课后习题及答案

《Java基础入门》课后习题第1章Java开发入门一、填空题1、Java的三大体系分别就是_JavaSE_____、_JavaEE_____、_JavaME_____。

2、Java程序的运行环境简称之为JRE_____。

3、编译Java程序需要使用_javac_____命令。

4、javac、exe与java、exe两个可执行程序存放在JDK安装目录的bin______目录下。

5、path______环境变量用来存储Java的编译与运行工具所在的路径,而_classpath_____环境变量则用来保存保存Java虚拟机要运行的“、class”文件路径。

二、选择题1、以下选项中,哪些属于JDK工具?(多选)ABCDA、Java编译器B、Java运行工具C、Java文档生成工具D、Java打包工具2、Java属于以下哪种语言?CA、机器语言B、汇编语言C、高级语言D、以上都不对3、下面哪种类型的文件可以在Java虚拟机中运行?DA、、javaB、、jreC、、exeD、、class4、安装好JDK后,在其bin目录下有许多exe可执行文件,其中java、exe命令的作用就是以下哪一种?BA、Java文档制作工具B、Java解释器C、Java编译器D、Java启动器5、如果jdk的安装路径为:d:\jdk,若想在命令窗口中任何当前路径下,都可以直接使用javac与java命令,需要将环境变量path设置为以下哪个选项?BA.d:\jdk;B.d :\jdk\bin;C.d:\jre\bin;D.d:\jre;三、问答题1、简述Java的特点。

面向对象、跨平台性、健壮性、安全性、可移植性、多线程性、动态性等。

2、简述JRE与JDK的区别。

JRE(Java Runtime Environment,Java运行时环境),它相当于操作系统部分,提供了Java程序运行时所需要的基本条件与许多Java基础类,例如,IO类、GUI控件类、网络类等。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

jdk与jre的区别
很多程序员已经干了一段时间java了依然不明白jdk与jre的区别。

JDK就是Java Development Kit.简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。

SDK是Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等。

JRE是Java Runtime Enviroment是指Java的运行环境,是面向Java程序的使用者,而不是开发者。

如果安装了JDK,会发同你的电脑有两套JRE,一套位于\jre 另外一套位于C:\Program Files\Java\jre1.5.0_15目录下,后面这套比前面那套少了Server端的Java虚拟机,不过直接将前面那套的Server端Java虚拟机复制过来就行了。

而且在安装JDK可以选择是否安装这个位于C:\Program Files\Java 目录下的JRE。

如果你只安装JRE,而不是JDK,那么只会在C:\Program Files\Java 目录下安装唯一的一套JRE。

JRE的地位就象一台PC机一样,我们写好的Win32应用程序需要操作系统帮我们运行,同样的,我们编写的Java程序也必须要JRE才能运行。

所以当你装完JDK后,如果分别在硬盘上的两个不同地方安装了两套JRE,那么你可以想象你的电脑有两台虚拟的Java PC机,都具有运行Java程序的功能。

所以我们可以说,只要你的电脑安装了JRE,就可以正确运行Java应用程序。

1、为什么Sun要让JDK安装两套相同的JRE?
这是因为JDK里面有很多用Java所编写的开发工具(如javac.exe、jar.exe等),而且都放置在\lib\tools.jar 里。

从下面例子可以看出,先将tools.jar改名为tools1.jar,然后运行javac.exe,显示如下结果:Exception in thread "main" ng.NoClassDefFoundError: com/sun/tools/javac /Main 这个意思是说,你输入javac. exe与输入java -cp c:\jdk\lib\tools.jar com.sun.tools.javac.Main 是一样的,会得到相同的结果。

从这里我们可以证明javac.exe只是一个包装器(Wrapper),而制作的目的是为了让开发者免于输入太长的指命。

而且可以发现\lib目录下的程序都很小,不大于2 9K,从这里我们可以得出一个结论。

就是JDK里的工具几乎是用Java所编写,所以也是Java应用程序,因此要使用JDK所附的工具来开发Java程序,也必须要自行附一套JRE才行,所以位于C: \Program Files\Java目录下的那套JRE就是用来运行一般Java程序用的。

2、如果一台电脑安装两套以上的JRE,谁来决定呢?
这个重大任务就落在java.exe身上。

Java.exe的工作就是找到合适的JRE来运行Java程序。

Java.exe依照底下的顺序来查找JRE:自己的目录下有没有JRE;父目录有没有JRE;查询注册表:[HKEY_LOCAL_MACHINE\SOFT WARE\JavaSoft\Java Runtime Environment] 所以java.exe的运行结果与你的电脑里面哪个JRE被执行有很大的关系。

ADD:(小小结)
1.JVM -- java virtual machineJVM就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。

2.JRE -- java runti me environmentJRE是指java运行环境。

光有JVM还不能成class的执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。

在JDK的安装目录里你可以找到jre目录,里面有两个文件夹bin和lib,在这里可以认为bi n里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和lib和起来就称为jre。

所以,在你写完java程序编译成.class之后,你可以把这个.class文件和jre一起打包发给朋友,这样你的朋友就可以运行你写程序了。

(jre里有运行.class的java.exe)
3.JDK -- java development kitJDK是java开发工具包,基本上每个学java的人都会先在机器上装一个JDK,那他都包含哪几部分呢?让我们看一下JDK的安装目录。

在目录下面有六个文件夹、一个s rc类库源码压缩包、和其他几个声明文件。

其中,真正在运行java时起作用的是以下四个文件夹:bin、include、li b、jre。

现在我们可以看出这样一个关系,JDK包含JRE,而JRE包含JVM。

bin:最主要的是编译器(javac.exe)in clude:java和JVM交互用的头文件lib:类库jre:java运行环境(注意:这里的bin、lib文件夹和jre里的bin、lib 是不同的)总的来说JDK是用于java程序的开发,而jre则是只能运行class而没有编译的功能。

eclipse、idea等其他IDE有自己的编译器而不是用JDK bin目录中自带的,所以在安装时你会发现他们只要求你选中jre路径就ok了。

相关文档
最新文档