您当前的位置:首页 > 互联网教程

java中为什么会出现multiple

发布时间:2025-05-24 12:46:21    发布人:远客网络

java中为什么会出现multiple

一、java中为什么会出现multiple

导致报multiple markers at this line错误的原因一般是函数里面嵌套了函数!java开发推荐千锋教育,千锋教育拼搏、开拓、思危、创新的创业精神激励每位前来学习的学员。

做java开发时,常出现的错误有以下几点:

代码重复可谓是十分常见的问题。他也是Refactoring的主要目标之一。

针对初学者和有经验的 Java程序员,建议还不要忽视异常。异常抛出通常是带有目的性的,因此在大多数情况下需要记录引起异常的事件。

在算法中,哈希表是数据结构的名称。但在Java中,数据结构的名字是HashMap中。其中一个Hashtable和HashMap的之间的主要区别是,Hashtable是同步的。

一个类里面的内容变化率不同。面向对象的抽象就是把相对不变的和相对变化相隔离。把问题变化的一方面和另一方面相隔离。这使得这些相对不变的可以重用。

想要了解更多关于java开发的相关信息,推荐咨询千锋教育。千锋企合作部整合大量企业客户资源,紧抓当下企业需求,将技术和项目完美结合千锋课程体系,力求培养更多优质人才服务企业,不断提升学员竞争力,链接企业用人标准的培训课程及实战项目,让企业招聘用人的技术要求与千锋学员的技术充分对接。近年来不断引进阿里钉钉小程序技术、红帽认证、腾讯云、亚马逊等,通过与企业的深度融合实现千锋教研和就业服务的迭代升级,专业性值得信赖。

二、java语言与C++相比,有哪些优点

JAVA和C++都是面向对象语言。也就是说,它们都能够实现面向对象思想(封装,继乘,多态)。而由于c++为了照顾大量的C语言使用者,而兼容了C,使得自身仅仅成为了带类的C语言,多多少少影响了其面向对象的彻底性!JAVA则是完全的面向对象语言,它句法更清晰,规模更小,更易学。它是在对多种程序设计语言进行了深入细致研究的基础上,摒弃了其他语言的不足之处,从根本上解决了c++的固有缺陷。

Java和c++的相似之处多于不同之处,但两种语言有几处主要的不同使得Java更容易学习,并且编程环境更为简单。

我在这里不能完全列出不同之处,仅列出比较显著的区别:

JAVA语言让编程者无法找到指针来直接访问内存无指针,并且增添了自动的内存管理功能,从而有效地防止了c/c++语言中指针操作失误,如野指针所造成的系统崩溃。但也不是说JAVA没有指针,虚拟机内部还是使用了指针,只是外人不得使用而已。这有利于Java程序的安全。

c++支持多重继承,这是c++的一个特征,它允许多父类派生一个类。尽管多重继承功能很强,但使用复杂,而且会引起许多麻烦,编译程序实现它也很不容易。Java不支持多重继承,但允许一个类继承多个接口(extends+implement),实现了c++多重继承的功能,又避免了c++中的多重继承实现方式带来的诸多不便。

Java是完全面向对象的语言,所有函数和变量都必须是类的一部分。除了基本数据类型之外,其余的都作为类对象,包括数组。对象将数据和方法结合起来,把它们封装在类中,这样每个对象都可实现自己的特点和行为。而c++允许将函数和变量定义为全局的。此外,Java中取消了c/c++中的结构和联合,消除了不必要的麻烦。

Java程序中所有的对象都是用new操作符建立在内存堆栈上,这个操作符类似于c++的new操作符。下面的语句由一个建立了一个类Read的对象,然后调用该对象的work方法:

语句Read r=new Read();在堆栈结构上建立了一个Read的实例。Java自动进行无用内存回收操作,不需要程序员进行删除。而c十十中必须由程序员释放内存资源,增加了程序设计者的负担。Java中当一个对象不被再用到时,无用内存回收器将给它加上标签以示删除。JAVA里无用内存回收程序是以线程方式在后台运行的,利用空闲时间工作。

Java不支持操作符重载。操作符重载被认为是c十十的突出特征,在Java中虽然类大体上可以实现这样的功能,但操作符重载的方便性仍然丢失了不少。Java语言不支持操作符重载是为了保持Java语言尽可能简单。

Java不支持预处理功能。c/c十十在编译过程中都有一个预编泽阶段,即众所周知的预处理器。预处理器为开发人员提供了方便,但增加了编译的复杂性。JAVA虚拟机没有预处理器,但它提供的引入语句(import)与c十十预处理器的功能类似。

7. Java不支持缺省函数参数,而c十十支持

在c中,代码组织在函数中,函数可以访问程序的全局变量。c十十增加了类,提供了类算法,该算法是与类相连的函数,c十十类方法与Java类方法十分相似,然而,由于c十十仍然支持c,所以不能阻止c十十开发人员使用函数,结果函数和方法混合使用使得程序比较混乱。

Java没有函数,作为一个比c十十更纯的面向对象的语言,Java强迫开发人员把所有例行程序包括在类中,事实上,用方法实现例行程序可激励开发人员更好地组织编码。

c和c十十不支持字符串变量,在c和c十十程序中使用Null终止符代表字符串的结束,在Java中字符串是用类对象(string和stringBuffer)来实现的,这些类对象是Java语言的核心,用类对象实现字符串有以下几个优点:

(1)在整个系统中建立字符串和访问字符串元素的方法是一致的;

(2)J3阳字符串类是作为Java语言的一部分定义的,而不是作为外加的延伸部分;

(3)Java字符串执行运行时检空,可帮助排除一些运行时发生的错误;

(4)可对字符串用“十”进行连接操作。

“可怕”的goto语句是c和c++的“遗物”,它是该语言技术上的合法部分,引用goto语句引起了程序结构的混乱,不易理解,goto语句子要用于无条件转移子程序和多结构分支技术。鉴于以广理由,Java不提供goto语句,它虽然指定goto作为关键字,但不支持它的使用,使程序简洁易读。

在c和c十十中有时出现数据类型的隐含转换,这就涉及了自动强制类型转换问题。例如,在c十十中可将一浮点值赋予整型变量,并去掉其尾数。Java不支持c十十中的自动强制类型转换,如果需要,必须由程序显式进行强制类型转换。

JAVA中的异常机制用于捕获例外事件,增强系统容错能力

其中exceptionType表示异常类型。而C++则没有如此方便的机制。

Java群体每天都在扩大,它既包括一些世界最大的ISV,也包括公司CIO、信息技术人员、系统分析人员、C/S开发人员、编程人员、多媒体设计者、市场行销人员、教育工作者、经理、影视生产者甚至业余爱好者等广泛的用户。从传统上看,这样一些人在一起有效地工作是不多见的。当我们谈到开放系统时,我们往往是就已发表的API及规格,或者源码的可得性,或者硬件、联网及操作系统而言的,没有一个人是从人的开放意义上来谈的。Java完成了开放系统的闭合链。它开发了人力资源,而反过来又开辟了共同工作的道路。

一谈到Java,人们马上会想起一种类似于C++的、适用于分布环境的面向对象编程语言,想到这种语言的简单、稳定、安全、与体系结构无关、可移植、可解释、高性能、多线程和动态性等特征。这些都是Java作为一种程序设计语言的主要特征。

Java是由Sun公司的一个技术小组研制出来的。在实现Java语言的过程中,Sun小组的技术人员很快就意识到:C++无法成为一种完全面向对象的、网络化的开发语言。C++是通过给原先的C语言增加面向对象功能而开发出来的,因此,它存在着先天不足。这主要体现在C++种类繁多,功能大量冗余,同时又没有任何一种C++编译器能够支持它的全部功能。鉴于这种情况,Sun公司的技术人员决定不扩充C++,而开发一种全新的计算机语言(Java的前身Oak)。但是,C++已经成了大多数编程人员所熟练掌握的语言,Java的设计显然不能无视这个现实。如果Java和C++之间的差别过大,那么程序员们在学会这种语言的过程中无疑要花费大量的时间和精力。因此,Java保留了尽可能多的C++风格。

Java自诞生起,为网络用户创造了无数客户端的小应用程序,由于这类应用程序效果良好、数量巨大,以至于许多用户想到Java编程语言时,会在脑海中出现一个不完全正确的印象-Java是用来编写小的客户端程序的。其实,随着技术的进步,Java语言正在逐步改变自己执行效率较低、无法担任企业关键计算任务的形象,不断向计算技术的核心地带前进。今天的Java技术正沿着网络渗入各个应用领域。

企业计算:企业计算是Java最重要的技术主题。Sun公司已经公布了企业JavaBean(EJB,Enterprise JavaBean)的规格,随后众多公司开始开发企业应用领域的Java技术。IBM公司也已经为Windows NT开发了IBM HPCJ(High Performance Compiler for Java)12.0版,同时研制了IBM JDK(JavaDevelopment Kit)for Windows NT,Novell公司也在宣布了一个新的服务器端的企业Java平台,而Sun公司也在积极地升级自己的JDK系统,这个形势表明,Java正在稳步走向企业高端计算。对于Java来说,与其它编程语言争夺企业计算主力编程工具的优势在于:其一,Java在进行面向对象的编程工作时,比其它的编程语言如C++更加简单,因此保证了编程的高效率,减少了编程投入;其二,Java虚拟机技术所提供的"一次编程,到处使用"的跨平台能力非常适合网络环境,这给Java在网络服务器端的发展提供了便利条件;其三,Java拥有强大的提供商和支持者队伍,该队伍包括IBM、Oracle、Novell、Sybase和Netscape等公司。

提速运行:许多企业的应用开发人员非常喜爱Java的语言特性,但是在开发重要系统时,语言特性和执行效率之间的抉择往往令人伤透脑筋。在关键计算中,用户可能并不在乎数据如何压缩或者运行的延迟关系如何设置,但是对程序的运行速度却非常重视,这使厂商将Java的编译策略开发放在了首位。现在的Java语言,其执行方式已经不仅仅是解释执行方式了,即时编译器(JITC、just-in-time compiler)技术和原型编译技术已经被许多厂家采用,包括Sun、IBM、Oracle以及Netscape等公司在内的技术提供商正在利用这些技术逐步提高Java的执行速度,其中IBM公司早已将Java虚拟机(JVM,JavaVirtual Machine)、操作系统和硬件的特性有机的结合在一起,非常有效地提高了Java的执行效率。

嵌入计算:嵌入式Java是一个潜力巨大的应用技术,该技术充分发挥了Java小巧灵活的特点。以HP公司为例,该公司以自己的方式制造编译工具和Java虚拟机,其目的是将Java嵌入各种设备,如打印机、医学监视器和自动提款机等。嵌入设备依靠一个实时操作系统来处理某一个实时生效的事件,Java被嵌入这些设备后,通过实时扩展(real-time extension)开始发挥作用,使设备具备了一定的智能性,增强了嵌入设备的可管理性和可用性,大大提高了设备的工作效率。各厂商对这一潜力巨大的市场都非常重视,目前该市场缺乏的是一个标准,如果存在标准的话,相信很快就会有大量使用嵌入Java技术的设备上市。

微软刚刚发行的Windows XP放弃了对Java的支持,但Java能够独立运行于很多操作平台上,其中也包括Linux,并且在某些特性上要比在Windows上发挥得更好,我们完全有理由抛弃Windows而选择使用Linux来做Java开发。现在,你可以左手拿着Linux,右手拿着Java,然后对面带微笑手里拿着Windows XP的Bill Gates说:"让你的XP去见鬼吧!"

对于软件开发者来讲,任何一种编程语言都不可能是完美的。如果希望更好地理解Java语言,最好的方法是把这种语言与其同类型的语言相比较。既然Java类似于C++,把它同C++进行一番比较也是顺理成章的事情,哪一个好,哪一个不好,每个开发人员都有各自的看法。我个人认为Java开发要比C++好一些。当然每个人的看法和喜好是不同的。后面的文章将向大家介绍Java和C++的不同和对其的改进。孰强孰弱,大家自然就会明白了。

我们知道,Java一开始采用C++的语法格式,基本上是为了让程序设计者可以很快地熟悉 Java的语法格式,缩短学习Java的时间,毕竟C和C++仍旧是最多人会的一种程序语言。但是如果我们仔细检查Java程序语言的许多细节设计,我们可以发现Java去掉了不少C++的特点,并且加入一些新的特性。这些与C++的差异包括:

1.不再有#define、#include等预处理程序(Preprocessor)的功能

C++语言很重要的一个特点就是它的预处理程序。有些其他程序语言虽然也加入了#include的功能,但是还是欠缺处理宏(Macro)的能力。#define的功能在Java中我们可以用定义常数(constant)的方式来取代,而#include在Java中是不需要的,因为在Java中程序在执行时,会把类型数据记录在对象实体之中,我们不需要靠一些标头文件(header file)来知道我们使用的对象或数值是属于什么数据类型。

如果你使用C++语言时,只使用预处理程序的#include和#define功能的话,那么你大概不会觉得Java这样的设计对你产生什么样的困扰,但是如果你是使用C++语言预处理程序中宏功能的高手,你可能会觉得很不方便,进而怀疑Java如此设计的意义何在。

使用预处理程序虽然可以很方便地达到许多功能,但是站在软件工程的角度上看,对整个软件的维护其实是很不利的。由于C++语言中预处理程序的功能太过强大,厉害的程序设计高手常会自行开发一套只有自己看的懂的宏语言,一旦整个软件要交给其他人去维护,后继者很难在短时间内了解前一个人所写下的宏功能,增加软件开发时团队工作及日后维护的困难度。

另外一点则是C++语言的编译器所看到的程序代码,其实和程序设计者看到的程序代码是不同的。程序设计者看到的是尚未经过预处理程序处理过的程序代码,而编译器看到的则是预处理程序处理过的程序代码,一旦交给预处理程序处理的宏内容有误,编译器产生的错误信息将不会是程序设计师所预料的。而这一点自然也增加了程序在排错时的困难度。

预处理程序的存在也造成了阅读程序的不便。如果你想使用别人已经完成的C++语言程序,那么通常你不但要阅读他所写下的文件,还必须一并查阅上文件,才能了解其程序的全貌。如果换成是Java程序,只要查看java的程序文件就够了。

2.不再有structure、union及typedef

事实上,早在C++中就可以去掉C语言中的structure和union等对复杂数据的自定结构类型,因为类(Class)的定义方式可以完全做到这项功能。而typedef也是不必要的,一切都用类就可以了。虽然C++这样的设计是为了和C语言兼容,但是使用多余的语言特点不但不必要,而且容易造成对程序认识的混淆。

在Java程序语言中,去掉了程序向导语言中最重要的单元--函数(Function)。如果我们以对象向导的观念来看待函数,就可以了解函数在对象向导的概念中,是不必要的。在对象向导的程序观念里,对象的数据才是真正的主体,而处理对象数据的方法则必须依附在对象内才有意义。因此,去掉函数并不表示不再有子程序等模组化程序的概念,相反地,是利用对象中的方法来取代函数,再一次强化对向导的发展策略。

4.不再有多重继承(Multiplelnheritance)

在C++中,多重继承是一项很强的功能,但也是一般人难以掌控的部分。去掉多重继承虽然降低了Java语言的功能,但是也大幅简化撰写程序时的困难度。虽然移除了多重继承的功能,但是Java提供了interface的方式,可以达到部分多重继承的功用。所谓的interface基本上定义了一个类的对外沟通的方法原型,以及类内部的常数,和多重继承不同之处在于interface并不会定义类方法的内容,以及类中的变量数据。

在程序语言的发展史上,Goto一直是毁誉参半的一项功能。在很多时候使用Goto可以大幅减少不必要的程序代码,但是也由于Goto可以很自由地改变程序的流程,如果冒然地使用,更可能造成程序结构混乱的情况。一般来说,正确使用Goto的例子多出现在循环内部,想要提早结束某一层循环。在C语言中,我们可以使用break或contine来改变某一层循环的流程,但如果想要改变两层以上的环执行流程,不是使用Goto就是以多余的布尔(boolean)变量,配合上一串if-then-else的判断来达成。

Java一方面移除了Goto的功能,而另一方面同时扩大了break和continue的功能,可以允许多层循环的break或continue。如此一来不但避免了滥用Goto的可能性,同时也保存下Goto的好处。

在C++中,Operator Overloading同样也是一项值得讨论的设计。几乎在所有C++的书中,都会引用一些例子,告诉你使用OperatorOverloading可以使你的程序看起来更为自然。如下面是一个程序设计师自定义的复数类:

//C++中自定义的复数类及0pemtor Overloading

Complex(double real,double image){

Complex operator+(Complex&rhs){

Return Complex(rhs.real_number+real_number,

rhs.image_number+image_,nulnbef);

在这里,如果你使用+来作为复数的加法符号,大家都不会有疑义,但是如果你使用的是*或》这样的符号,那么别人看到你的程序之后,难保不会产生认识上的错误。这也是Operator Overloading一大问题,当大家都对运算符赋予自己的定义后,整个程序的可读性就会大受影响。Operator Overloading的存在并不是必要的,我们一样可以定义类中的方法来达到同样的目的,至于Java去掉这项功能的利弊,恐怕就要读者自己去评断了。

Java是一个严格进行类型检查的程序语言,对于下面这样的程序,在C++的编译器上编译时最多只会出现警告的信息,但是在Java里则不予通过:

Int aInteger; Double aDouble=2.71828; AInteger= aDouble;

虽然这样的转型在C++里是合法的,但是也会造成数据精确度的损失。Java为了要确定写程序的人充分地了解这点,必须要程序设计强制转型(type casting),Java的编译器才会接受:

取消指针(Pointer)这样数据类型,可能会让许多熟悉C++语言的程序设计师大吃一惊。在C++语言里,灵活地运用指针是许多程序设计师的得意之作,但是占整个除错时间最久的也是指针的问题。配合上C++对内存管理的态度,程序设计师必须要自己去追踪自己向系统要到的内存,最后确实地交还给系统,并且在使用指针时,要小心翼翼地注意不要跨过合法的记忆空间,造成Segmentation Fault或General Protection Fault之类的问题。

Java去掉了指针类型,并不表示程序设计师在开发高级数据结构,像堆栈(stack)、队列(queue)、二元树(binarytree)时,都必须要像在传统Basic上,利用大范围的数组来自行模拟系统内存,自行建构类似指针的表示方式。

相反地,Java提供了和Lisp语言中相似的Reference类型,通过Reference去读取配置到的内存内容,可以确保不会去读取到不属于自己的内存空间,而另一方面,程序的执行系统也可以动态地去做内存垃圾回收的工作,将没有被reference参考到的内存空间回收给系统使用。

不管Java是多么强大,总是有人需要把它和C++连接起来。因为只要有一个新的程序语言或是软件开发工具一出现,大家就会问:"它是否具有和原有程序库连接的能力呢?"也因为C++语言在电脑界中占了很重要的地位。大家的问题其实就等于是直接问"它是否可以和C++连接?"。目前在Java中,的确提供了和C++语言连接的方法,它的做法基本上是先将C++语言所写的程序建构成动态链接函数库(DynamicLinking Library,DLL),再由Java程序去调用DLL里的函数。

这种连接的方式,使得DLL中的函数,从Java的眼光看就是一个"方法"。不过因为这种方法是直接由其他的程序语言所提供,而不是以Java语言所写的,所以它被称之为"原生方法"(NativeMethod)。

由于Java Applet一些安全上的限制,所以这种连接外部程序的方法只能用在Java Application内。

事实上,constant和typedef这两条语句包含了#define语句的作用。现在,结构和联合已经被Java的类所代替。删除这些特性的原因是:由于其希望维持与C语言的向后兼容性,C++的语言规范包含了大量冗余。比如,类实际上就已经包括了结构和联合的作用,因此这两种数据结构完全可以取消。关于#define语句,Java语言规范的制订者认为:尽管该语句的出发点是为了增强程序的可读性,但实际效果却恰恰相反,它常常导致难读的代码,故应该予以取消。Java不再支持独立函数,因此任何函数都必须封装到某个类中。由于人们普遍认为, C++所用的超类是非常不稳定的,因此Java抛弃了C++中的多继承并代之以接口。Java的接口指的是,在别的类看来一个类所能实现的方法。它所显示的只是一个类的方法或常量和变量,而不是这个类的全部结构。

最后,Java还取消了C++中的GOTO语句、操作符重载、自动类型转换及指针数据类型。 GOTO语句引起的争议已经有很多年了,可一直阴魂不散,这跟某些程序员对该语句一直情有独钟有关。C++仍然支持数据类型的自动转换,但Java要求编程人员显式实现数据类型之间的转换。自动数据类型转换使得两个数据类型互不兼容的变量可以相互赋值,而不需要给出显式说明。这有时会导致一些问题,其中最常见的是精确度损失。比方说,如果把一个带符号的32位整数赋给一个无符号整数,则所有的结果均为正数。Java的设计者们认为这很容易引起程序错误,从而决定不支持这种转换方式。

三、Java的swing被什么取代了

Java中的Swing框架现在是不是被淘汰了

没有淘汰,只是java的重心不是放在GUI这块,而是放在Web,移动终端设备上。

没有淘汰,只是java的重心不是放在GUI这块,而是放在Web,移动终端设备上。

例如,GUI开发,在windowsos上有C#/VB.NET,MFC,Delphi,QtCreator这些在GUI做得比javaGUI成熟。所以Sun没必要拿自己的短处与别人的长处拼,sun之所以保留它,只是为填补java在GUI这块的空白。也可以认为是凑个数罢了。

毕竟Java在web方面的地位被确立了,所以桌面上的地位可能会被影响,不过可以告诉你的是JavaSwing肯定是可以做其他任何界面UI语言可做的任何事情。再说Java还可以选择SWT进行UI设计,Eclipse就是一个不错的例子。所以不会淘汰的,现在还有人用。

Java主要应用领域分别是什么?

【导语】Java是现在社会社会上比较火的编程语言,一方面是因为语言的自我魅力,另一方面是因为应用领域比较广泛,在嵌入式领域、大数据技术、软件工具、网站应用等方面,丢可以使用,下面就给大家进行Java主要应用领域的具体介绍,一起来看看吧。

【导语】Java是现在社会社会上比较火的编程语言,一方面是因为语言的自我魅力,另一方面是因为应用领域比较广泛,在嵌入式领域、大数据技术、软件工具、网站应用等方面,丢可以使用,下面就给大家进行Java主要应用领域的具体介绍,一起来看看吧。

Java在嵌入式领域也有很大的应用。你只需要130KB就能够使用Java技术(在一块小的芯片或者传感器上),这显示了这个平台是多么的可靠。Java最初是为了嵌入式设备而设计的。

事实上,这也是Java最初的一项“立即编写,随处运行”主旨的一部分。

Hadoop和其他的大数据技术也在不同程度使用着Java,例如Apache的基于Java的Hbase,Accumulo(开源),以及ElasticSearch。

但是Java并没有占领整个领域,还有其他的大数据技术例如MongoDB就是使用C++编写的.如果Hadoopor和ElasticSearch逐渐发展,那么Java就能有潜力在大数据技术领域上得到更大的发展空间。

很多有用的软件和开发工具都是运用Java编写和开发的,例如Ecilpse,InetelliJIdea和NetbansIDE.。我认为这些都是最经常使用的用Java编写的桌面应用程序。就如上面所说,Swing曾经在图形用户界面的客户端开发非常流行,它们大多数应用在金融服务领域以及投资银行。虽然现在JavaFx正在逐渐地流行起来,但仍然无法替代Swing,而且C#已经在大部分金融领域中代替了Swing。

Java同样也在电子商务和网站开发上有着广泛的运用。你可以运用很多RESTfull架构,这些架构是用SpringMVC,Struts2.0和类似的框架开发出来的。

甚至简单的Servlet,JSP和Struts在各种政府项目也是备受欢迎,许多政府,医疗,保险,教育,国防和其他部门的网站都是建立在Java之上的。

Java在金融服务业有着很大应用。很多的全球性投资银行例如GoldmanSachs(高盛投资公司),Citigroup(花旗集团),Barclays(巴克莱银行),StandardCharted(英国渣打银行)和一些其他银行都用Java编写前台和后台的电子交易系统,结算、信息确认系统,数据处理项目和以及其他的项目。

Java被运用于编写服务端应用,但大多数没有前端,都是从一个服务端(上一级)接受数据,处理数据后发向其他的处理系统(下一级)。

JavaSwing由于能开发出图形用户界面的客户端供交易者使用而备受欢迎,但是现在C#正在取代Swing的市场,这让Swing倍有压力。

第三方交易系统,金融服务行业的一大部分,同样也是使用Java编写的。例如像Murex这种受欢迎的交易系统,运用于与许多的银行前端链接,同样也是用Java编写的。

虽然IOS和Android的到来几乎扼杀了J2ME的市场,但是仍然有很多的低端诺基亚和三星手机在使用着J2ME。

曾经有段时间大部分的游戏,手机应用都是利用MIDP和CLDC,或者J2ME部分平台编写的,以适用于Android系统。J2ME依然在蓝光、磁卡、机顶盒等产品中流行着。app之所以如此流行是因为对于所有的诺基亚手机,app仍然适用于J2ME。

Java平台已经大大提高了性能特点和JITS,并且Java也拥有像C++级别的传输性能。因此,Java也流行于编写高并发系统。

虽然Java的传输性能不比C++,但你可以不用考虑Java的安全性,可移植性和可维护性等问题(Java内部已经实现好了),而且Java有着更快的运行速度。安全性等问题会使一个没有经验的C++程序员编写的应用程序变得更加缓慢和不可靠。

现在Java经常是科学应用的默认选择,包括了自然语言处理。这最主要的原因是因为Java比起C++或者其他语言有更加的安全,可移植,可维护,而且Java有着更好的高级并发工具。

如果你想知道Java应用在哪里,你离答案并不远。打开你的安卓手机或者任何的App,它们完全是用有着谷歌AndroidAPI的Java编程语言编写的,这个API和JDK非常相似。前几年安卓刚开始起步而到今日已经很多Java程序员是安卓App的开发者。

关于Java主要应用领域,就给大家介绍到这里了,希望对大家能有所帮助,如果你想进行Java编程学习,那么就需要找专业人士进行学习,一步一个脚印的学好并应用到实践中,祝大家成功!

提供一组“轻量级”(全部是Java语言)组件,尽量让这些组件在所有平台上的工作方式都相同。

ActionAction接口提供ActionListener接口的一个有用扩展,以便若干控件访问相同的功能。

BoundedRangeModel定义由Slider和ProgressBar这类组件使用的数据模型。

CellEditor此接口定义任何通用编辑器应该能够实现的方法。

ComboBoxEditor用于JComboBox组件的编辑器组件。

ComboBoxModel用于组合框的数据模型。

DesktopManagerDesktopManager对象由DesktopPane对象所拥有。

Icon一个小的固定大小图片,通常用于装饰组件。

JComboBox.KeySelectionManager定义KeySelectionManager的接口。

ListCellRenderer标识可用作“橡皮图章”以绘制JList中单元格的组件。

ListModel此接口定义方法组件(如JList),这些组件用于获取列表中每个单元格的值以及列表的长度。

ListSelectionModel此接口表示任何组件的当前选择状态,该组件显示一个具有稳定索引的值列表。

MenuElement可以放入菜单中的所有组件都应该实现此接口。

MutableComboBoxModelComboBoxModel的可变版本。

Renderer为负责“呈现”(显示)值的对象定义需求。

RootPaneContainer此接口由具有单个JRootPane子组件的组件来实现,这些子组件包括:JDialog、JFrame、JWindow、JApplet、JInternalFrame。

Scrollable为类似JScrollPane的滚动容器提供信息的接口。

ScrollPaneConstants与JScrollPane组件一起使用的常数。

SingleSelectionModel最多支持一个索引选项的模型。

SpinnerModel对象值的潜在无界序列的模型。

SwingConstants通常用于在屏幕上定位或定向组件的常量的集合。

UIDefaults.ActiveValue此类使用户能够在默认表中存储项,该默认表在每次使用某个getXXX(key)方法进行查找时创建。

UIDefaults.LazyValue此类使用户能够在默认表中存储项,该默认表只有在第一次使用某个getXXX(key)方法进行查找时才创建。

WindowConstants用于控制窗口关闭操作的常量。

AbstractAction此类提供JFCAction接口的默认实现。

AbstractButton定义按钮和菜单项的一般行为。

AbstractListModel该数据模型的抽象定义提供一个带内容的List。

AbstractSpinnerModel此类提供SpinnerModel接口的ChangeListener部分,该接口应该适用于最具体的SpinnerModel实现。

ActionMapActionMap提供从Object(称为键或Action名)到Action的映射。

BorderFactory提供标准Border对象的工厂类。

Box使用BoxLayout对象作为其布局管理器的一个轻量级容器。

Box.Filler参与布局但没有视图的轻量级组件的实现。

BoxLayout允许纵向或横向布置多个组件的布局管理器。

ButtonGroup此类用于为一组按钮创建一个多斥(multiple-exclusion)作用域。

CellRendererPane此类被插入在单元格渲染器与使用它们的组件之间。

ComponentInputMapComponentInputMap是与特定JComponent相关联的InputMap。

DebugGraphics支持图形调试的图形子类。

DefaultBoundedRangeModelBoundedRangeModel的一般实现。

DefaultButtonModelButton组件的数据模型的默认实现。

DefaultCellEditor表单元格和树单元格的默认编辑器。

DefaultComboBoxModel组合框的默认模型。

DefaultDesktopManager此类是DesktopManager的实现。

DefaultFocusManager此类已被废弃,用1.4focusAPI取代。

DefaultListCellRenderer呈现列表中的一个项。

DefaultListCellRenderer.UIResource实现UIResource的DefaultListCellRenderer的子类。

DefaultListModel此类以松散方式实现java.util.VectorAPI,它实现1.1.x版本的java.util.Vector,没有collection类支持,并且在发生更改时通知ListDataListener。

DefaultListSelectionModel列表选择的默认数据模型。

DefaultSingleSelectionModelSingleSelectionModel的一般实现。

FocusManager从1.4focusAPI开始,此类已被废弃。

GrayFilter一个图像过滤器,它通过将图像转换成灰度级图像并增亮图像中的像素来“禁用”图像。

ImageIcon一个Icon接口的实现,它根据Image绘制Icon。

InputMapInputMap提供输入事件(目前只使用KeyStroke)和Object之间的绑定。

InputVerifier此类的用途是通过带文本字段的GUI帮助客户端支持流畅的焦点导航。

InternalFrameFocusTraversalPolicy该FocusTraversalPolicy可以有选择地提供确定JInternalFrame初始Component的算法。

JAppletjava.applet.Applet的扩展版,它添加了对JFC/Swing组件架构的支持。

JCheckBox复选框的实现,复选框是一个可以被选定和取消选定的项,它将其状态显示给用户。

JCheckBoxMenuItem可以被选定或取消选定的菜单项。

JColorChooserJColorChooser提供一个用于允许用户操作和选择颜色的控制器窗格。

JComboBox将按钮或可编辑字段与下拉列表组合的组件。

JComponent该类是除顶层容器外所有Swing组件的基类。

JDesktopPane用于创建多文档界面或虚拟桌面的容器。

JDialog创建对话框窗口的主要类。

JEditorPane可编辑各种内容的文本组件。

JFileChooserJFileChooser为用户选择文件提供了一种简单的机制。

JFormattedTextFieldJFormattedTextField扩展了JTextField,添加了对格式化任意值的支持,以及一旦用户编辑了文本就检索特定对象的支持。

JFormattedTextField.AbstractFormatterJFormattedTextField所使用的AbstractFormatter实例,用于处理从Object到String和从String到Object的转换。

JFormattedTextField.AbstractFormatterFactoryJFormattedTextField使用的AbstractFormatterFactory实例,用来获得AbstractFormatter实例,依次使用该实例格式化各个值。

JFramejava.awt.Frame的扩展版本,该版本添加了对JFC/Swing组件架构的支持。

JInternalFrame提供很多本机窗体功能的轻量级对象,这些功能包括拖动、关闭、变成图标、调整大小、标题显示和支持菜单栏。

JInternalFrame.JDesktopIcon此组件表示JInternalFrame的图标化版本。

JLabel用于短文本字符串或图像或二者的显示区。

JLayeredPaneJLayeredPane为JFC/Swing容器添加了深度,允许组件在需要时互相重叠。

JList该组件允许用户从列表中选择一个或多个对象。

JMenu菜单的该实现是一个包含JMenuItem的弹出窗口,用户选择JMenuBar上的项时会显示该JMenuItem。

JOptionPaneJOptionPane有助于方便地弹出要求用户提供值或向其发出通知的标准对话框。

JPanelJPanel是一般轻量级容器。

JPasswordFieldJPasswordField是一个轻量级组件,允许编辑一个单行文本,其视图指示键入内容,但不显示原始字符。

JPopupMenu弹出菜单的实现,弹出菜单是一个可弹出并显示一系列选项的小窗口。

JPopupMenu.Separator弹出与菜单有关的分隔符。

JProgressBar默认显示有界区间整数值的组件。

JRadioButton实现一个单选按钮,此按钮项可被选择或取消选择,并可为用户显示其状态。

JRadioButtonMenuItem一个单选按钮菜单项的实现。

JRootPane该轻量级容器由JFrame、JDialog、JWindow、JApplet和JInternalFrame在后台使用。

JScrollPane提供轻量级组件的scrollable视图。

JSeparatorJSeparator为实现分隔线提供了一个通用组件-通常用作菜单项之间的分隔符,以便将菜单项分成几个逻辑组。

JSlider一个让用户以图形方式在有界区间内通过移动滑块来选择值的组件。

JSpinner让用户从一个有序序列中选择一个数字或者一个对象值的单行输入字段。

JSpinner.DateEditor其模型为SpinnerDateModel的JSpinner编辑器。

JSpinner.DefaultEditor一个针对非常特殊编辑器的简单基类,该类在JFormattedTextField中显示模型的当前值的只读视图。

JSpinner.ListEditor其模型为SpinnerListModel的JSpinner编辑器。

JSpinner.NumberEditor其模型为SpinnerNumberModel的JSpinner编辑器。

JSplitPaneJSplitPane用于分隔两个(只能两个)Component。

JTabbedPane一个组件,它允许用户通过单击具有给定标题和/或图标的选项卡,在一组组件之间进行切换。

JTableJTable用来显示和编辑规则的二维单元表。

JTextAreaJTextArea是一个显示纯文本的多行区域。

JTextFieldJTextField是一个轻量级组件,它允许编辑单行文本。

JTextPane可以用以图形方式表示的属性来标记的文本组件。

JToggleButton具有两个状态的(two-state)按钮的实现。

JToggleButton.ToggleButtonModelToggleButton模型警告:此类的已序列化对象与以后的Swing版本不兼容。

JToolBarJToolBar提供了一个用来显示常用的Action或控件的组件。

JToolBar.Separator一个特定于工具栏的分隔符。

JToolTip用来显示Component的“提示”。

JTree将分层数据集显示为轮廓的控件。

JTree.DynamicUtilTreeNodeDynamicUtilTreeNode可以包装vectors/hashtables/arrays/strings并根据需要创建适当的子树节点。

JTree.EmptySelectionModelEmptySelectionModel是一个不允许选择任何内容的TreeSelectionModel。

JViewport用于查看基础信息的“视口”或“观察孔”。

JWindowJWindow是一个容器,可以显示在用户桌面上的任何位置。

KeyStroke表示键盘或等效输入设置上的键操作的KeyStroke。

LayoutFocusTraversalPolicy根据Component的大小、位置和方向对其排序的SortingFocusTraversalPolicy。

LookAndFeel从可插入外观组件的角度全面展现外观的特性。

MenuSelectionManagerMenuSelectionManager拥有菜单层次结构中的选项。

OverlayLayout要在彼此顶部安排组件的布局管理器。

PopupPopup用于向用户显示Component,它通常位于特定包含层次结构中所有其他Component的顶部。

PopupFactory顾名思义,PopupFactory用于获取Popup的实例。

ProgressMonitor监视某个操作的进度的类。

ProgressMonitorInputStream监视读取某些InputStream的进度。

RepaintManager此类管理重绘请求,以最大限度地降低重绘次数。

ScrollPaneLayoutJScrollPane使用的布局管理器。

ScrollPaneLayout.UIResourceScrollPaneLayout的UI资源版本。

SizeRequirements为方便布局管理器,计算组件的有关大小和位置信息。

SizeSequence一个SizeSequence对象,它有效地维护一个包含大小和相应位置的顺序列表。

SortingFocusTraversalPolicy通过对焦点遍历循环的Components按给定Comparator排序确定遍历顺序的FocusTraversalPolicy。

SpinnerDateModelDate序列的一个SpinnerModel。

SpinnerListModel其值由数组或List定义的SpinnerModel的简单实现。

SpinnerNumberModel用于数字序列的SpinnerModel。

Spring该Spring类的实例将存储以下三个表示其行为特征的属性:minimum、preferred和maximum值。

SpringLayoutSpringLayout根据一组约束布置其相关容器的子组件。

SpringLayout.ConstraintsConstraints对象将管理组件大小和位置更改方式的约束存储在SpringLayout控制的容器中。

SwingUtilitiesSwing实用方法的集合。

Timer在指定延迟之后激发一个或多个操作事件。

ToolTipManager管理系统中的所有ToolTips。

TransferHandler此类用于处理往返于Swing组件的Transferable的传输。

UIDefaultsSwing组件的默认值表。

UIDefaults.LazyInputMapLazyInputMap将在其createValue方法中创建一个InputMap。

UIDefaults.ProxyLazyValue此类提供一个可用于延迟加载要创建实例类的LazyValue的实现。

UIManager此类跟踪当前的外观及其默认设置。

UIManager.LookAndFeelInfo为了配置菜单或为了初始应用程序设置而提供关于已安装的LookAndFeel的少量信息。