Java小问题

1.什么是Java

Java是一种开发语言(核心特点:跨平台,面向对象),对于开发者来讲,Java基本等于Jdk。

开发人员一般通过IDE(Eclipse、NetBeans、JBuilder等)编写、编译Java代码(在远古没有IDE的时代,都是用文本编辑器编写,使用javac编译),在这个过程中,会使用到Jdk与第三方Jar包(Jar包即一组编译后的类打成的压缩包,可以使用解压工具解压成文件结构)。

其中,Jdk中包含Jre,在Jdk的安装目录下有一个名为jre的目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是Jvm,lib中则是Jvm工作所需要的类库,而Jvm和lib和起来就称为Jre。

 

 

2.什么是Jdk

即Java Development Kit,是针对Java开发人员的产品,是整个Java的核心

 

3.什么是Jre

即Java Runtime Environment,是运行Java程序所须环境的集合,包含Jvm标准实现及Java核心类库。

 

与大家熟知的Jdk不同,Jre是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器),只是针对于使用Java程序的用户,只有通过它,Java的开发者才得以将自己开发的程序发布到用户手中,让用户使用。

运行Java程序一般都要求用户的电脑安装Jre;没有jre,java程序无法运行;而没有java程序,jre就没有用武之地。

 

包括:虚拟机Jvm,运行类库(runtime class libraries)和启动器(Javaapplication launcher)。

 

4.什么是Jvm

即Java Virtual Machine,我们常说的Java虚拟机, 是整个Java实现跨平台最核心的部分,能够运行通过Java语言编写的应用程序。

 

所有的Java程序会首先被编译为.class的类文件,Jvm虚拟机可以执行这种编译后的类文件,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释为目标代码(不同操作系统不同),给本地系统执行。

 

Jvm屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码,就可以在多种平台上不加修改地运行。

只有Jvm还不能成class的执行,因为在解释class的时候Jvm需要调用解释所需要的类库lib,即Jre中的lib类库,单独的Jvm没有任何作用。

 

5.Java都有那些版本

Java最初由sun公司出品,2009年被orcale公司(即甲骨文)收购,它的版本体系分为两个纬度,纵向和横向。

纵向的版本即为我们常说的Jdk版本,通过近20年的时间,从1996年正式发布1.0版本,发展到2014年的8.0版本。

横向的版本即为我们所说的Java体系,从Java 2.0开始有所区分。

 

6.什么是Java体系

Java SE(J2SE,Java 2Platform Standard Edition,标准版)

Java EE(J2EE,Java 2Platform Enterprise Edition,企业版)

Java ME(J2ME,Java 2Platform Micro Edition,微型版)

 

7.Java体系这三个版本是做什么的

1).什么是Java SE:以前称为J2SE。

它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java应用程序。

Java SE包含了支持Java Web服务开发的类,并为Java Platform,Enterprise Edition(Java EE)提供基础。

2).什么是Java EE: 以前称为J2EE。

企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java应用程序。

Java EE是在Java SE的基础上构建的,它提供Web服务、组件模型、管理和通信API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和Web 2.0应用程序。

3).什么是Java ME: 以前称为J2ME。

Java ME为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。

Java ME包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。

 

P.S.

基于Java ME规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。

 

8.J2SE、J2EE、J2ME三者有什么关系

J2EE包含J2SE; 
J2ME包含J2SE的核心类,但新添加了一些专有类。

 

9.J2EE里面的2是什么意思

J2SE,J2EE,J2ME中2的含义要追溯要1998年。

1998年Java1.2版本发布,1999年发布Java 1.2的标准版,企业版,微型版三个版本,为了区分这三个版本,分别叫做Java2SE,Java2EE,Java2ME,简称J2SE,J2EE,J2ME。故,2的含义为1.2版本。

但是,这种叫法已经在2005年Java 1.6发布后取消,J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为JavaME。

所以,现在的J2EE等叫法是05年以前老一辈的叫法。

 

10.Java的名称是怎么来的

Java是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名。

Java语言中的许多库类名称,很多与咖啡有关:如JavaBeans(咖啡豆)、NetBeans(网络豆)以及ObjectBeans(对象豆)等等。

sun和java的标识也正是一杯正冒着热气的咖啡:

 

P.S. 
另一中说法是:Java源自是Java的几个主要开发人员名字的组合:James Gosling(詹姆斯·高斯林)Arthur Van Hoff(阿瑟·凡·霍夫)Andy Bechtolsheim(安迪·贝克托克姆),或“Just Another Vague Acronym”(只是另一个含糊的缩写)。 
但比较可信的说法还是这群人出于对咖啡的喜爱,所以以Java咖啡来命名。类文件的前四个字节如果用十六进制阅读的话,分别为“CA FE BA BE”,就会拼出两个单词“CAFE BABE”(咖啡宝贝)。

 

11.Java是谁搞出来的

JamesGosling(詹姆斯·高斯林)

这个家伙被成为Java之父,是sun公司Java项目的核心成员,不过这显然不是他一个人的功劳。

 

12.什么是纯C架构系统

完全脱离网络就可独立使用的软件系统(即客户端C,client),这类软件不受限于网络,只依赖于操作系统。

如:PC上的word、视频播放器等软件。

 

13.什么是C/S架构系统

拥有自己独立的一个或多个服务端系统(即服务端S,server),每个使用者拥有自己独立的客户端软件(即C,client),客户端与服务端通过网络进行数据的交互。

 

P.S.

所谓服务端,是可以通过网络访问的,接受/处理客户端数据的,为客户端提供数据的服务器+Web服务。

所谓客户端,即可以与指定服务端通过网络交互数据的纯C架构软件。

如:智能用电系统(C端:每户的智能电表;S端:电力数据管理系统)。

 

14.什么是B/S架构系统

拥有自己独立的一个或多个服务端系统(即S,server),每个使用者通过浏览器(即B,browser)与服务端进行数据的交互。

P.S. 
如果把浏览器作为客户端的话,B/S架构即是一种特殊的C/S架构系统。 
如:各大电商。


15.Java都能干什么

了解了以上概念,我们回到主题来看看Java都能干什么。

目前,Java的应用十分广泛,除了计算机底层开发,理论上其他均可以使用Java开发(当然排除那些垄断的企业,比如我们的大苹果)。

 

主要包括如下几个方面:

 

客户端软件

包括PC软件(包括windows、mac、linux等多操作系统上的软件)、软件插件、企业级应用的客户端

例如:我们熟悉的eclipse大部分都是使用java编写的,以及eclipse的各种插件

这类应用主要使用Swing、AWT或者SWT(前两者均包含在JDK中,后者是IBM的第三方库)开发。

下面是使用Swing+AWT开发的记事本截图(运行在mac系统中):


企业级应用

C/S架构系统的服务端、B/S架构系统均可以使用Java进行开发。

例如:B/S架构:ERP系统、C/S架构:医院管理系统(每个医生的pc上都会安装对应客户端)。

 

P.S.

大部分医院采用C/S架构系统,主要是因为医学的特殊性,例如需要展示x光片、B超视频以及其他浏览器无法很好支持的特殊功能。当然,这种趋势在不久的将来可能会改变。

下面是SAP公司开发的ERP系统截图:


16.web应用 
纯B/S架构系统,面对人群不是企业而是个人,现在很大一部分互联网企业的平台均是使用Java开发。

例如:个大电商、论坛、O2O服务平台。

手机应用

我们熟悉的手机Android系统便是由Java开发的,android系统的应用软件,绝大部分都是由Java开发。

 

P.S.

当然也有例外,目前有一部部分android游戏便不是Java实现,而是通过框架使用C++或者其他语言开发的,常见的有cocos2dx。

 

例如:android系统的大部分软件应用。

 

 

 

 

17.jar是什么

JAR(Java Archive)是一个独立于平台的文件格式。可以包含多个文件,若干Java applet及其必要的组件(.class文件、图片和声音等)可以被打包在一个JAR文件中。

 

JAR文件格式以各种操作系统均能够压缩/解压的zip文件格式为基础。与zip不同的是,jar文件不仅仅用于压缩和发布,而且还用于封装库、组件和插件以及部署程序,并可被像编译器和JVM这样的工具直接使用。

 

在JAR中可以包含特殊的文件,例如:manifests和部署描述符,用来指示工具如何处理特定的jar。

 

使用jar的好处在于能够提高网络传输的速度,并且JAR还支持压缩,降低了文件的大小,进一步提高了传输效率。

 

此外,它是完全可扩展的,对应的API在java.util.jar包中。

 

18.jar和zip有什么区别

jar文件格式提供了许多优势和功能,其中很多是传统的压缩格式如zip或者rar所没有的。它们之间的区别和联系主要包括:

 

安全性

jar文件可以加上数字化签名。这样一来,能够识别签名的工具就可以有选择地为用户授予软件安全特权,这是zip做不到的,数字签名还可以检测代码是否被篡改过。

 

减少下载时间

如果一个applet捆绑到一个jar中,那么浏览器就可以在一个HTTP请求中下载这个applet的类文件和相关的资源,而不是对每一个文件打开一个新连接。

 

压缩

同zip一样,jar格式也允许压缩文件以提高存储效率。

 

平台扩展

Java扩展框架(Java Extensions Framework)提供了向Java核心平台添加功能的方法,这些扩展是用jar打包的。

 

包密封性

存储在jar文件中的包可以进行密封,以增强版本一致性和安全性。密封一个jar包意味着jar包中的所有类都必须在同一jar文件中。

 

包版本控制

一个jar可以包含有关它文件的数据,如厂商和版本信息等。

 

可移植性

处理jar的机制是Java平台核心API的标准部分,跨平台可以毫无问题的使用。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值