Java好学吗?
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立性和可移植性、多线程、动态性等特点[2]。Java可以编写桌面应用、Web应用、分布式系统和嵌入式系统应用[3]。
外国名字
Java 语言(一种计算机语言,尤用于创建网站)
现在的公司
神谕
发射时间
1995年5月
快的
航行
编程开发
语言特点
操作原理
语言基础
语言标准
语言规范
技术应用
学习指南
帕斯卡求值
发展历史
90年代,硬件领域出现了单片机系统。这种低成本的系统一出现,立刻引起了自动控制领域人士的关注,因为它可以大大提高消费电子产品(如电视机顶盒、面包烤箱、手机等)的智能化程度。).为了抢占市场先机,孙公司在1991成立了名为格林的项目组。帕特里克、詹姆斯·高斯林(james gosling)、迈克·谢里丹(Mike Sheridan)和其他几位工程师一起在加州门洛帕克(Menlo Park)沙丘路(Dune Road)的一个小工作室里开发新技术,专门研究计算机在家用电器中的嵌入式应用。
Java语言(一种计算机语言,尤用于创建网站)
因为C++的优势,项目组的研究人员首先考虑用C++编写程序。然而,对于硬件资源极其匮乏的单片系统来说,C++程序过于复杂和庞大。此外,由于消费电子产品使用的嵌入式处理器芯片种类繁多,如何让编写的程序跨平台运行也是一个难题。为了解决困难,他们首先着眼于语言开发,假设了一种结构简单、满足嵌入式应用需求的硬件平台架构,并为其制定了相应的规范,其中定义了这种硬件平台的二进制机器码指令系统(也就是后来成为“字节码”的指令系统),这样在语言开发成功后,半导体芯片厂商就可以开发生产这种硬件平台。对于新语言的设计,Sun公司的人员并没有开发一种全新的语言,而是根据嵌入式软件的要求对C++进行了改造,去掉了一些不实用、影响安全性的组件,并结合嵌入式系统的实时性要求,开发了一种面向对象的语言,叫做Oak。
由于开发Oak语言时没有运行字节码的硬件平台,为了在开发时对这种语言进行实验研究,他们在现有软硬件平台的基础上,按照自己指定的规范,用软件搭建了一个操作平台。整个系统比C++简单,没有太大区别。1992年夏天,Oak语言开发成功时,科研人员向硬件厂商演示了绿色操作系统、Oak编程语言、类库及其硬件,说服他们使用Oak语言生产硬件芯片,但硬件厂商对此并没有很大的热情。因为他们认为在大家对Oak language一无所知的情况下生产硬件产品风险太大,Oak language因为缺乏硬件支持无法进入市场,所以一直搁置。
在1994的六七月期间,经过三天的讨论,团队决定再次改变他们努力的目标,这次他们决定将这项技术应用到万维网上。他们认为,随着马赛克浏览器的到来,互联网正在向他们在有线电视网络中看到的高度互动的前景演变。作为原型,帕特里克诺顿写了一个小的网络浏览器WebRunner。[4]
1995,互联网的蓬勃发展给了奥克一个机会。为了让死板单调的静态网页变得“灵活”,业界迫切需要一种软件技术来开发一种程序,可以通过网络传播,跨平台运行。因此,世界各大IT公司都投入了大量的人力、物力和财力。这时,孙公司想起了搁置已久的橡树,重新审视用软件编写的实验平台。因为它是根据嵌入式系统的硬件平台架构编写的,所以体积很小,特别适合网络上的传输系统。Oak也是一种简化语言,程序非常小,适合在网络上传输。Sun公司最早推出了可以嵌入网页并随web Applet一起在网络上传输的Applet(Applet是一种将小程序嵌入网页中执行的技术),并将Oak改名为Java(申请注册商标时发现Oak已经被人使用,想了一系列名字,最后用了一个Java字,是提议者在喝一杯Java咖啡时无意中提到的)。5月23日,Sun公司在Sun world大会上正式发布了Java和HotJava浏览器。IBM、苹果、DEC、Adobe、HP、Oracle、Netscape、微软等各大公司都停止了相关的开发项目,购买Java许可证,为自己的产品开发相应的Java平台。[5] [6]
1996 1.0,Sun公司发布了第一个Java开发工具包(JDK 1.0),这是Java发展的一个重要里程碑,标志着Java成为一个独立的开发工具。9月份,用Java技术制作了大约83,000个网页。5438年6月+10月,Sun公司发布了第一款面向Java平台的JIT编译器。
1997 2月,JDK 1.1问世,在随后的三周内,就达到了22万的下载量。4月2日,Java One大会召开,参会人数超过1万人,创下了当时世界同类会议的纪录。9月,Java开发人员连接社区的成员超过6.5438亿。
1998 12.8,第二代Java平台J2EE企业版发布。1999年6月,Sun公司发布了三个版本的第二代Java平台(简称Java 2):J2ME(Java 2 Micro Edition),用于移动、无线、资源有限的环境;J2SE(Java 2 Standard Edition,Java 2平台的标准版本),应用于桌面环境;J2EE(Java 2Enterprise Edition,Java 2 platform的企业版)应用于基于Java的应用服务器。Java 2平台的发布是Java发展过程中最重要的里程碑,标志着Java应用普及的开始。
4月27日,1999,热点虚拟机发布。HotSpot虚拟机在发布时是作为JDK 1.2的插件提供的,后来成为JDK 1.3之后所有版本Sun JDK的默认虚拟机[7]。
2000年5月,JDK1.3、JDK1.4、J2SE1.3相继发布。几周后,他们得到了苹果公司的Mac OS X工业标准的支持。2001年9月24日,J2EE1.3发布。2002年2月26日,J2SE1.4发布。从此,Java的计算能力有了很大的提高。与J2SE1.3相比,多了近62%的类和接口。在这些新特性中,它还提供了广泛的XML支持、安全套接字支持(通过SSL和TLS协议)、全新的I/OAPI、正则表达式、日志和断言。2004年9月30日,J2SE1.5发布,成为Java语言发展史上的又一个里程碑。为了显示这个版本的重要性,J2SE 1.5更名为Java SE 5.0(内部版本号1.5.0),代号为“老虎”。Tiger包含了自1996版本1.0发布以来最重大的更新,包括泛型支持、基本类型的自动打包和改进。
Java的创始人之一:詹姆斯·高斯林
2005年6月,在Java One大会上,Sun发布了Java SE 6。这个时候Java的各种版本都已经改名了,去掉了数字2,比如J2EE改名JavaEE,J2SE改名JavaSE,J2ME改名JavaME。[8]
2006年6月3日,Java技术的发明者Sun公司宣布Java技术将作为自由软件发布。Sun正式发布了第一批关于Java平台标准版的源代码,以及Java mini版的可执行源代码。从2007年3月开始,世界上所有的开发者都可以修改Java源代码[9]。
2009年,甲骨文公司宣布收购孙[10]。2065 438+00 Java编程语言联合创始人之一詹姆斯·高斯林(james gosling)从甲骨文辞职。2011年,甲骨文公司举行全球活动庆祝Java7的推出,随后Java7正式发布。2014年,甲骨文公司发布了Java8正式版[11]。
编程开发
程序设计环境
Java概念图
JDK(Java Development Kit),又称Java开发包或Java开发工具,是一个用于编写Java Applet和应用程序的程序开发环境。JDK是Java的核心,包括Java运行时环境、一些Java工具和Java API。无论Java应用服务器是什么,它都有一个内置的JDK版本。主流的JDK是由Sun公司发布的。除了Sun之外,许多公司和组织都开发了自己的JDK,例如IBM开发的、BEA开发的Jrocket和GNU组织开发的JDK[13]。
另外,Java SE API子集和Java API类库中的Java虚拟机可以统称为JRE(JAVA Runtime Environment),JRE是支持Java程序运行的标准环境[14]。
JRE是一个运行环境,JDK是一个开发环境。所以写Java程序的时候需要JDK,运行Java程序的时候需要JRE。JDK已经包含了JRE,所以只要安装了JDK,就可以正常编辑Java程序,运行Java程序。但是由于JDK包含了很多与运行无关的内容,占用空间很大,所以运行普通Java程序不需要安装JDK,只需要JRE [15]即可。
编程工具
Eclipse:基于Java的开源可扩展开发平台[16]。
NetBeans:一个开源的Java集成开发环境,适合各种客户端和Web应用程序。
IntelliJ IDEA:具有良好的代码自动提示和代码分析功能。[17]
MyEclipse:Genuitec开发的商业软件,是一个广泛使用的Java应用集成开发环境[18]。
EditPlus:如果Java编译器“Javac”和解释器“Java”配置正确,可以直接使用EditPlus编译执行Java程序[19]。
语言特点
1.简单
Java看起来很像C++,但是为了让语言变得小巧,便于熟悉,设计师们去掉了C++语言中很多可用的特性,这些特性是普通程序员很少用到的。例如,Java不支持go to语句,而是提供break和continue语句以及异常处理。Java还消除了C++的运算符重载和多重继承特性,不使用主文件,从而消除了预处理器。因为Java没有结构,数组和字符串都是对象,所以不需要指针。Java可以自动处理对象引用和间接引用,实现无用单元的自动收集,让用户不用担心存储管理,可以把更多的时间和精力放在研发上。
2.面向对象
Java是一种面向对象的语言。对于程序员来说,这意味着关注数据和操纵数据的方法,而不是严格按照过程来思考。在面向对象的系统中,类是数据和操作数据的方法的集合。数据和方法一起描述了对象的状态和行为。每个对象都是其状态和行为的封装。类是按照一定的体系和层次来排列的,这样子类就可以继承超类的行为。这个类层次结构中有一个根类,它是一个具有一般行为的类。Java程序是按类组织的。
Java还包括一组扩展的类,它们形成各种包,用户可以在自己的程序中使用。例如,Java提供了生成图形用户界面组件的类(java.awt包),其中awt是abstract windowing toolkit的缩写,处理输入输出的类(java.io包)和支持网络功能的类(java.awt包)。
3.分配
Java是为支持网络应用而设计的,它是一种分布式语言。Java不仅支持各种层次的网络连接,而且用Socket类支持可靠的流网络连接,因此用户可以产生分布式的客户机和服务器。
网络成为软件应用程序的分布式载体。Java程序只要写一次就可以在任何地方运行。
4.编译和解释
Java编译器生成字节码,而不是通常的机器码。Java字节码提供了一种与体系结构无关的目标文件格式,该代码被设计用来有效地将程序转移到多个平台。Java程序可以在任何实现Java解释器和运行时系统的系统上运行。
在解释性环境中,程序开发的标准“链接”阶段已经大大消失了。如果说Java还有一个链接阶段,那只是一个将新类放入环境的过程,是一个增量的轻量级的过程。因此,Java支持快速原型和简单测试,这将导致快速的程序开发。这是一个微妙的开发过程,与传统耗时的“编译、链接和测试”形成鲜明对比。
5.稳健性
Java最初被用作编写消费电子产品软件的语言,所以它被设计用来编写高度可靠和健壮的软件。Java消除了一些编程错误,使得用它编写可靠的软件变得非常容易。
Java 语言(一种计算机语言,尤用于创建网站)
Java是一种强类型语言,它允许在编译时扩展检查潜在类型不匹配的功能。Java要求显式方法声明,不支持C风格的隐式声明。这些严格的要求确保了编译器可以捕捉调用错误,从而产生更可靠的程序。
可靠性方面最重要的增强之一是Java的存储模型。Java不支持指针,这消除了重写存储和损坏数据的可能性。类似地,Java的自动“垃圾收集”防止了存储泄漏和其他与动态存储分配和释放相关的有害错误。Java解释器还执行许多运行时检查,比如验证所有的数组和字符串访问都在界限内。
异常处理是Java中的另一个特性,它使程序更加健壮。异常是一种信号,表示出现了类似于错误的异常情况。使用try/catch/finally语句,程序员可以找到错误处理代码,这简化了错误处理和恢复的任务。
6.安全性
Java的存储分配模型是其防御恶意代码的主要方法之一。Java没有指针,所以程序员无法得到隐藏的内部信息和假指针指向内存。更重要的是,Java编译器不处理存储安排决策,因此程序员无法通过查看声明来猜测类的实际存储安排。编译后的Java代码中存储引用的实际存储地址是由Java解释器在运行时确定的。
Java操作系统使用字节码验证过程来确保网络上加载的代码不违反任何Java语言限制。这种安全机制包括如何从互联网加载类。例如,加载的类被放在单独的名称空间中,而不是本地类中,以防止恶意小程序用它们自己的版本替换标准Java类。
7.轻便
Java使语言声明独立于实现方面。例如,Java明确说明了每个基本数据类型的大小及其操作行为(这些数据类型由Java语法描述)。
Java环境本身可以移植到新的硬件平台和操作系统。Java编译器也是用Java写的,Java运行系统是用ANSIC语言写的。
8.高性能
Java是一种先编译后解释的语言,所以没有完全编译的语言快。但是,在某些情况下,性能非常重要。为了支持这些情况,Java设计者们做了一个“即时”编译器,可以在运行时将Java字节码翻译成特定CPU(中央处理器)的机器码,即实现全编译。
Java字节码格式设计考虑到了这些“适时”编译器的需求,所以生成机器码的过程相当简单,而且可以产生相当好的代码。
9.多线程操作
Java是一种多线程语言,支持多线程执行(也叫轻量级进程),可以处理不同的任务,很容易设计出有线索的程序。Java的lang包提供了一个Thread类,支持启动线程、运行线程、停止线程、检查线程状态的方法。
Java cue支持还包括一组同步原语。这些原语是C.A.R.Haore基于管理程序和条件变量的风格开发的广泛使用的同步方案。有了关键字synchronized,程序员就可以证明一些方法不能在一个类中同时运行。这些方法在监控程序的控制下,以确保变量保持在一致的状态。
10.动态的
Java语言是为适应不断变化的环境而设计的。它是一种动态的语言。比如Java中的类是按需加载的,有些甚至是通过网络获取的。[20]
操作原理
它包括四个方面:
操作原理
(1)Java编程语言
(2)Java类文件格式
(3)Java虚拟机
(4)Java应用程序接口[21]
在编辑和运行一个Java程序的时候,这四个方面要同时涉及。使用文字编辑软件(如记事本、写字板、UltraEdit等。)或者集成开发环境(Eclipse、MyEclipse等。)在Java源文件中定义不同的类[22],通过调用类中的方法访问资源系统(这些类实现Java API),将源文件编译成二进制中间代码,存储在类文件中。然后通过运行操作系统平台环境对应的Java虚拟机来运行类文件,执行编译生成的字节码,调用类文件中实现的方法来满足程序的Java API调用[6]。
语言基础
基本数据结构
Java中有八种数据类型来存储数值、字符和布尔值。
整数类型
整数类型用于存储整数值,即没有小数部分的值。它可以是积极的,也可以是消极的。Java程序中整数数据有三种表示方式,即十进制、八进制和十六进制。
整数数据根据其内容的大小可以分为四种类型。
数据类型存储器
字节
8位
短的
16位
(同Internationalorganizations)国际组织
32位
全部展开
浮点型
数据类型存储器
漂浮物
32位
两倍
64位
字符类型
字符类型用于存储单个字符,占用16位(两个字节)的内存空间。定义字符变量时,应该用单引号表示。使用char关键字定义字符变量。
数据类型存储器
茶
16位
布尔型
布尔型也叫逻辑型。布尔型变量由关键字Boolean定义,只有真和假两个值,分别代表布尔逻辑中的“真”和“假”。布尔型通常在过程控制中用作判断条件。
关键字
关键词含义
摘要
抽象类或方法
维护
用于查找内部程序错误。
破裂
跳出开关或回路
全部展开
关键词引用数据源[23]
运算符
运算符是一些特殊的符号,主要用在数学函数、某些类型的赋值语句和逻辑比较中。
赋值运算符
赋值运算符由符号“=”表示。它是一个二元运算符(处理两个操作数),其功能是将右操作数中包含的值赋给左操作数。
例如:
int a = 100;
算术运算符
操作员描述
+
增加
-
负的
*
多样地
全部展开
自增自减算子
自增自减是单目运算符,可以放在操作数之前或之后。操作数必须是整数或浮点变量。自增自减运算符的作用是将一个变量的值增加或减少1。放在操作数前面的自增自减运算符,会先将变量的值加1或减1,然后让变量参与表达式的运算。放在操作数后面的自增自减运算符,会先使变量参与表达式的运算,然后在变量值上加1或减1。
例如:
假设a=5。
b = ++ a;//先把A的值加1,然后赋给B,这时A的值是6,B的值是6。
b = a++;//先把A的值赋给B,再把A的值改成6。此时,A的值为6,B的值为5。
比较运算符
比较运算符属于二元运算符,用于比较程序中的变量、变量和自变量以及其他类型的信息。比较运算符的结果为布尔型。当运算符对应的关系成立时,运算结果为真,否则为假。比较运算符有六个* * *,通常在条件语句中作为判断的依据。
操作员描述
& gt
比较左是否大于右。
& lt
比较左是否小于右。
==
比较左右是否相等。
全部展开
逻辑算子
操作员操作
& amp& amp
逻辑与
||
逻辑或
!
逻辑非
语言基本参考资料来源[24]
程序示例
/*一个简单的Java应用程序,它显示的内容是:Hello World!
文件名是hello.java */
你好{
//程序从main()开始
公共静态void main(String args[]){
System.out.println("Hello World!");
}
}
正如注释所说,main方法是程序的第一行。对于一个Java应用来说,main方法是必不可少的,Java解释器以main为入口执行程序,不生成任何对象。每个类中可以定义多个方法,但只能有一个主方法。关键字public表示访问权限,表示所有类都可以使用此方法。在这种情况下,main必须被定义为public,因为当程序开始执行时,它需要被其类之外的代码调用。关键字static表示该方法是一个类方法。关键字void表示main()方法不返回值。main方法的括号中定义的字符串args[]是传递给main方法的参数。参数名为args,是类String的对象。方法的参数由“类名参数名”指定,多个参数之间用逗号分隔。该行的最后一个字符是“{”,表示主程序体的开始,一个方法中包含的所有代码都将包含在花括号之间。另外,main只是解释器开始工作的地方。一个复杂的程序可能包含几十个类,但是这些类只需要一个main方法。[25]
语言标准
1997 165438+10月17国际标准化组织(ISO)同意采用Sun的专利技术——Java作为ISO标准。作为一种技术标准,JAVA对公众是免费的。通过ISO的批准,Sun将能够提交JAVA的标准化平台规范。[26]
发布时间名称
2000年10月65438日
ISO/TS 10303-27:2000
2006年5月
ISO/IEC 19777-2:2006
2014七月15
ISO/IEC TR 13066-6:2014
全部展开
语言标准参考[27] [28] [29] [30] [31]
语言规范
JCP(Java Community Process)是一个开放的国际组织,主要由Java开发者和被许可者组成。其职能是开发和更新Java技术规范、参考实现(RI)和技术兼容性包(TCK)。
JCP维护的规范包括Java ME、Java SE、Java EE、XML、OSS、JAIN等。一个组织的成员可以提交JSR(Java规范请求),通过一个特定的程序后进入下一个版本的规范。
JSR是早期提出并最终发布的Java平台规范的具体描述。通常,提出新的JSR来增加或标准化Java平台的功能。具体的JSR由专家组制定,工作由组长协调。如CLDC 1.0 (JSR30)由Sun公司的Antero Taivalsaari牵头,专家组成员还包括西门子、摩托罗拉、诺基亚、Symbian等。Java ME平台规范是在JSR68中定义的,规范的主导者是Sun公司的Jon Courtney。
JSR完成后,相关规范和JavaAPI将在JCP官方网站上公布。设备制造商可以在自己的产品中实现JSR,如MIDP2.0(JSRll8)。但这些都必须通过TCK(技术兼容套件)测试,以保证技术兼容性。[32]
根据技术类别,可分为以下几类:
1,J2EE平台规范[33]
2、J2SE平台规范[34]
3、J2ME平台规范[35]
4、运营支撑系统规范(OSS)[36]
5、集成网络Java应用(JAIN)[37]
6、XML操作规范[38]
技术应用
1,安卓应用
许多Android应用程序是由Java程序员和开发人员开发的。虽然Android使用不同的JVM和不同的封装方法,但是代码还是用Java语言写的。相当一部分手机支持JAVA游戏,这让很多非程序员都懂JAVA。
2.应用于金融行业的服务器程序
Java在金融服务中应用广泛,很多第三方交易系统、银行、金融机构都选择用Java开发,因为它相对安全[39]。大型跨国投资银行使用Java编写前台和后台电子交易系统、结算和确认系统、数据处理项目等项目。大多数情况下,Java用于服务器端开发,但大部分都没有任何前端。它们通常从一个服务器(上层)接收数据,经过处理后发送给另一个处理系统(下层)。
3.网站(全球资讯网的主机站)
Java在电子商务和网站开发领域占据了一定的地位。开发者可以使用很多不同的框架来创建web项目,比如SpringMVC、Struts2.0和框架。即使是简单的servlet、JSP和基于struts的网站也经常在政府项目中使用。比如医疗、保险、教育、国防等不同部门的网站,都是基于Java开发的。
4.嵌入字段
Java在嵌入式领域有很大的发展空间。在这个平台上,只需要130KB就可以使用Java技术(在智能卡或传感器上)。
5.大数据技术
Hadoop等很多大数据处理技术都是Java的,比如Apache的基于Java的HBase和Accumulo,以及ElasticSearchas。
6.高频交易的空间
Java平台改进了这个平台的特性,即使编译了,也可以像C++一样传输数据。正是因为这个原因,Java才成为程序员编写交易平台的语言,因为虽然性能不如C++,但开发者可以避免安全性、可移植性、可维护性等问题。
7.科学应用
在包括自然语言处理在内的科学应用中,Java是一个很好的选择。主要原因是Java在安全性、可移植性、可维护性和其他高级语言的并发性方面都优于C++或其他语言。
Java语言易学难掌握,配置东西更复杂。