导航:首页 > 编程语言 > java的缺点

java的缺点

发布时间:2023-08-17 17:38:20

A. java开发的缺点有哪些

我认为Java语言的10大问题是:
1、缺少闭包(closure):我想这个不需要解释了。函数式编程已经存在几十年了,但最近几年,它们获得了越来越多的关注,最主要的原因,是它可以自然地编写并行程序。我部分的同意Joshua Bloch强调在Java中引入闭包的问题需要再想一想(BGGA提议的方式真的很糟),至少闭包的缺失,使得在Java中做任何真正的函数式编程都是不可能的。
2、缺少一等函数:这个问题与前一个有些关联,但我认为它更糟糕。在Java里,要达到类似效果的唯一方式,是使用著名的、丑陋悲惨的单方法匿名内部类,但这看上去的确是一个拙劣的方法。甚至在C#中,也通过代理机制,提供了一个更好的实现。
3、原生类型(Primitive types):如果在Java中一切皆对象,那是多么完美啊,但他们偏偏不这样设计。因而,这一点导致了一些问题,比如,不能把一个int放到集合(Collection)里,这个在Java5中通过自动装箱特性得到了解决(下面会提到)。它也造成了传值与传引用上的困扰,原生类型数据是通过值传给方法的(复制一份拷贝,然后传给函数),而真正的对象是通过传递(译注:其实是复制对象地址再传递,因此应该也是传值方式,只是由于函数内部可通过这个对象地址访问对象,因此效果上类似传引用)。
4、自动装箱(Autoboxing)和自动拆箱(autounboxing):这个特性是为了解决因原生类型的存在所导致的问题,在Java5引入的。它允许静默地转换原生类型到相应的对象,但这常常导致其它的问题。比如Integer可以为null,但int不能,因此这时JVM只能抛出一个难以调试的空指针异常(NullPointerException)。此外,它还可能导致其它奇怪的行为,就像下面的例子,我们就很难理解,变量test为什么是false:
Intger a = new Integer(1024);
Intger b = new Integer(1024);
boolean test = a < b || a == b || a > b;
5、缺少范型具类化:范型是Java5引入的一个很酷的特征,但是为了保持与旧版本Java的兼容性,导致缺失某些重要的特性,尤其是不能在运行时反省范型的类型。例如,你有一个方法,接受List参数,如果传进来一个List,你却不能知道运行里该范型的确切类型。同理,你也不能创建范型数组。这意味着,尽管下面的代码看起来很自然,但却不编译不了:
List[] listsOfStrings = new List[3];
6、不可避免的范型警告:你有发现过自己陷入不可能去掉的关于范型的警告么?如果你像我一样大量使用范型,我打赌你碰到过。事实上,是这个问题的规模化症状,让他们认为需要引入一个特定的注解(@SuppressWarnings("unchecked"))来处理这种情况,我觉得,范型应该可能被设计的更好。
7、不能传void给方法调用:我得承认,这种给方法传递void的需求,乍一看有些怪异。我喜欢DSL,当我实现自己的DSL库(lambdaj)的一个特定特性时,我不得不需要一个方法声明成这样的签名:void doSomething(Object parameter),这里为这个方法传进来的参数parameter,是另一个方法调用的结果,它唯一的目的,是注册调用(的对象)自身,以可以在以后执行它。让我吃惊的是,即使println方法返回void,看上去也并没有一个好理由,不允许我把代码写成这样,:
doSomething(System.out.println("test"));
8、没有原生的代理机制:代理是一种非常有效和应用广泛的模式,但Java提供的代理机制,只针对接口,而不是具体类。这是为什么象cblib这样提供这种机制的库,被如此多的主流框架,如Spring和Hibernate,采用的原因。此外,由于cglib通过运行时创建被代理类的子类来实现的,因此这些种方式有一个众所周知的限制——不能代理final类,比如String。
9、差劲的Switch...case语句:Java规定,switch...case只能选择int和enum(Java5开始)。这一点如果跟更现代的语言如Scala相比,看起来简直太弱了。
10、受检查异常(Checked exception):类似原生类型,受检查异常也已经成为Java的一个罪孽之源。它迫使程序员必须做下面两件极其糟糕讨厌的事情中的一个:让你的代码里充斥大量的、糟糕难读的、容易出错的try...catch语句,而这样做的最大意义,只是将捕获的异常,包装成运行时异常,然后再重新抛出;或者是让大量的抛出声明子句污染你的API,让接口缺少灵活性和可扩展性。
真正的问题是,这里我提到的这几大主要问题,唯一的解决办法,是要做一个痛苦的决择,定义一套新的语言规范,放下当前版本的向后兼容性。我猜他们永远也不会这么做,虽然我相信,如果编写一个能够自动转换旧Java源码的程序,让它们与假设的新版本兼容,并不是很困难。最后,这就是我决定开始寻找一个更好的JVM兼容语言的原因。

B. java 中的继承的 优点和缺点 主要是缺点

缺点是灵活性吧...effective java有专门章节(貌似是"复合优先于继承")详细的讲解了继承了局限性..~

以下内容来自互联网:

组合

通过创建一个由其他对象组合的对象来获得新功能的重用方法
新功能的获得是通过调用组合对象的功能实现的
有时又叫聚合
例如:
一个对象拥有或者对另外一个对象负责并且两个对象有相同的生命周期。(GOF)
一个对象包含另一个对象集合
被包含对象对其他对象是不可见的并且只能从包含它的对象中访问的特殊组合形式
组合的优缺点

优点
被包含对象通过包含他们的类来访问
黑盒重用,因为被包含对象的内部细节是不可见的
很好的封装
每个类专注于一个任务
通过获得和被包含对象的类型相同的对象引用,可以在运行时动态定义组合的方式
缺点
结果系统可能会包含更多的对象
为了使组合时可以使用不同的对象,必须小心的定义接口
继承

通过扩展已实现的对象来获得新功能的重用方法
基类有用通用的属性和方法
子类提供更多的属性和方法来扩展基类
继承的优缺点

优点
新的实现很容易,因为大部分是继承而来的
很容易修改和扩展已有的实现
缺点
打破了封装,因为基类向子类暴露了实现细节
白盒重用,因为基类的内部细节通常对子类是可见的
当父类的实现改变时可能要相应的对子类做出改变
不能在运行时改变由父类继承来的实现
由此可见,组合比继承具有更大的灵活性和更稳定的结构,一般情况下应该优先考虑组合。只有当下列条件满足时才考虑使用继承:

子类是一种特殊的类型,而不只是父类的一个角色
子类的实例不需要变成另一个类的对象
子类扩展,而不是覆盖或者使父类的功能失效

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zjliu1984/archive/2009/06/26/4299657.aspx

C. java有什么优点和缺点

Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
Java是功能完善的通用程序设计语言,可以用来开发可靠的、要求严格的应用程序。
java是纯面向对象开发,功能强大,分支众多,没有java不能做的软件。C/S也好B/S也好。从功能上讲,没有语言可以和java相比。
Java稳定,应用广泛,一定时期内很难被其他编程语言取代;而许多大型系统都是用java开发,也不可能轻易使用其他语言。

同时,java还具有很多特点
1、跨平台性,虽然是很好的优势,可以让java在任何的系统中运行,但是前提是该系统要安装java虚拟机,这样导致一些java编写的桌面程序无法在一般的用户(没有安装java虚拟机的用户)上使用
2、java的身后是sun公司,提供及时的api更新,但是过多的版本导致java的向下兼容性很差。而sun公司在j2ee上的标准定义的并不是完美,导致在j2ee的开发中多数使用开源框架,开源框架是好东西,但是更新速度并不快。
3、都说面向对象的语言先进与面向过程,java是oop语言,但是它适合的是bs系统,在web项目中java的实力毋庸置疑,但是转到了底层的程序却无法同c++抗衡。
4、个人认为java的最大优点是开源,但是这往往也成了最大的缺陷了,无法定义一个好的标准使得开发时使用了框架,在新的程序员来到公司时必须先了解框架,延缓了开发的时间。

所以java的前景应该是稳定而光明的。

D. java的优势与缺点

Java是一种可以撰写跨平来台应用软件自的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

优势:Java适合团队开发,软件工程可以相对做到规范。由于Java语言本身的极其严格语法的特点,Java语言无法写出结构混乱的程序。这将强迫程序员的代码软件结构的规范性。这是一个很难比拟的优势。

劣势:J2EE的架构很完美,第一版软件可以做满意,但是很不适合互联网模式的持续不断修改。互联网软件工程管理上的不足,持续的修修补补导致架构的破坏。

E. 对JAVA的理解,JAVA的优缺点,

JAVA的优点:

1、简单性

2、面向对象

3、分布性

4、编译和解释性

5、稳健性

6、安全性

7、可移植性

8、高性能

9、多线索性

10、动态性

JAVA的缺点:

1、速度比较慢

(5)java的缺点扩展阅读:

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

Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

Java语言是一门随时代快速发展的计算机语言程序,其深刻展示了程序编写的精髓,加上其简明严谨的结构及简洁的语法编写为其将来的发展及维护提供了保障。由于提供了网络应用的支持和多媒体的存取,会推动Internet和企业网络的Web的应用。

另外,为了保持Java的增长和推进Java社区的参与,Sun公司在Java One开发者大会上宣布开放Java核心源代码,以鼓励更多的人参与到Java社团活动中。

来自Java社团和IBM等全球技术合作伙伴两方面的支持,Java技术在创新和社会进步上继续发挥强有力的重要作用,并且随着其程序编写难度的降低使得更多专业人员将精力放置于Java语言的编写与框架结构的设计中。

阅读全文

与java的缺点相关的资料

热点内容
网络游戏推广策划案 浏览:609
替换所有文件内容的代码 浏览:960
不是常用数据模型有哪些 浏览:426
aspcms版本号 浏览:835
安卓怎么用数据流量下载软件 浏览:553
大众手动空调数据流通道号是多少 浏览:303
手机qq令牌 浏览:737
cg原画上色教程 浏览:993
婚介服务中心app怎么做 浏览:43
日本苹果66g多少钱 浏览:93
个性的文件夹名称 浏览:697
怎么设置文件打开密码 浏览:811
手机版qq客服代码怎么用 浏览:24
fme可以打开哪些文件 浏览:339
好看的qq密码 浏览:293
安卓唯一标识有哪些 浏览:243
win10ime 浏览:271
手机号大数据保护停机是什么意思 浏览:81
两个苹果手机怎么隔空投送app 浏览:903
ps修改有褶皱的文件 浏览:417

友情链接