前些天,在CSDN上看到了一个消息,说是ASP.NET AJAX 成功在Linux上运行,这一点对我触动很大,而且引发了我许多感叹,所以想写出来分享一下。
首先,先谈谈我对java的一些认识。我选择java,是因为他语法简单,功能强大,从web,到桌面,到嵌入式,无所不能。但当我进一步了解了java后,感叹,java原来也有许多缺点。下面我就列举一下我认为的java的优缺点。
先说优点,首先和C,C++这些语言比起来,java很简单,去掉指针的java,非常好理解,自动垃圾回收机制也很好,自从JDK1.5推出以后,性能上又有了很大提高,于是就有了这样一个呼声:让java代替C语言成为基本语言。这些足以说明java简单易学的这个优点。其次,java的功能强大,前面我也提到了,EJB3.0的推出使java成为了大型项目的首选。J2ME在手机游戏开发的作用也是无用质疑的。至于桌面程序,可能有人说java不行,界面不好看,但是请看看NetBeans和Eclipse吧,他们都是利用java开发的,而他们的界面是多么的华丽,所以界面决不是java的缺点。还有一个不得不提的优点就是大多java人员都挂在嘴边的java的跨平台性,目前这确实也是java优点之一。
再说说缺点:首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。有人说,对于一个大型项目,如果用java来作,可能需要9个月,并且可能需要翻阅10本以上的书,但如果用ruby来作,3个月,3本书就足够了,而.net也不过3,4本书足以,这就是区别。轮性能微软曾做过一个例子,就是同一个项目用java和.net来作,结果开发周期,.net是java的一半,性能java是.net的十分之一,代码量java是.net的三倍。呵呵,这说明了什么,.net的全方位比java好。但是有的人说.net不能跨平台,这个问题我和我同学曾讨论过,都认为微软的.net很可能早都可以跨平台了,但是微软为了保护他们的操作系统,所以才没有推出跨平台的.net,只是推出了跨语言的.net,进而能拉拢大多数程序员用windows产品。并且从ASP.NET AJAX可以跨平台这一点上,间接证明了我们的推断,至少证明了微软做过这方面的研究。所以如果哪一天突然听说了.net可以跨平台了,那么请不要吃惊,如果这一天真的到来,java就到了真正和.net决战的时刻。因为不到万不得以的时候微软是不会推出跨平台的.net的,如果跨平台的.net还不足以对抗java的话,那么微软还剩的手段就是开源了,呵呵。
还得说上一点,就java本质而言,是面相对象的,但是你有没有发现,java也不全是,比如说基本类型,int,那他就是整型而不是对象,转换类型是还得借助包装类。再举这样一个例子:如果你想对一个数字取绝对值,你会怎么做呢? java 的做法是int c = Math.abs(-166);而ruby的做法是:c = -166.abs。呵呵,这就看出了java与ruby的区别,在ruby里才是一切皆对象。当然我不并不是很了解ruby,但是ruby确实是将语法简化得很好。
最后就是我对java的几点希望:首先是IDE工具,有人说java已经很好了,有jbuilder,eclipse,netBeans等等,但是我认为如果java想超越.net,那么他首先要解决的就是IDE工具的整合,什么时候上述的三种开发工具能和三为一,什么时候java的竞争力才更强,才有机会拉拢更多的程序员投入到对java的开发上,因为到时的开发工具将会比.net的更简单。还有一点也很关键,什么时候java推出的jsf能成为真正意义上的标准,到时我们不用学struts,不用学spring,不用学Hibernate,只要能把jsf学会了,完全可以替代所有的框架,包括AJAX,都知道AJAX并不是新技术,虽说我没深入学习jsf但我认为jsf应该已经能通过其它技术替代AJAX,实现无缝刷新。
令人可喜的是java现在已经开源了,所以我想我上述的想法也许有一天会实现,因为java一直都是不断创新的语言,每次创新都会给我们惊喜,这也是我喜欢java的一个原因,我们会一点一滴见证她的成长的。
还有就是总有人问我到底该学习什么语言,什么语言有前途,那么我的回答是不论是C,C++,java,.net,ruby,asp或是其他语言都可以学,编程的关键不是语言,而是思想,一旦你有了思想,那你编的程序就有了灵魂,不管是什么语言到了你的手里都会是你的工具而已,他们的价值是能尽快帮助你实现你想要的目标。但是如果你没有了思想,那就像是海里的帆船失去了船帆,是很难到打海的另一边的。
Java到底会发战成什么样,让我们拭目以待吧,我始终坚信着java会更好。以上都是俺个人看法,欢迎大家一起交流.
网友评论:
# zqsphere
有些地方我不赞同你:
(1) 首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。
其实你不用Struts,spring这些东西,直接用jsp,servlet能够很方便地写出来,而且,可以根据个人的水平、爱好,有很多方案。而struts,spring这些东西的出来,恰恰证明了java的简单,要不怎么没有通过c/c++来搞个这种框架?
(2) 你通过从书的数量和开发周期及运行速度来证明:net和ruby要比java简单。如果参照(1),用java开发web只要两本书:一本是关于java基础的,一本是关于jsp、servlet的就可以了。开发周期长,我就来讲句题外话,现在有很多思想都是通过java来展现,比如模式、敏捷方法什么的,这些思想好,但是实施的人没有理解而且没有正确运用这些知识导致了开发周期的延长。比如说对象,通过getName()方法不能获取对象的名字,那这个对象有什么意义?现在很多用javabean的人就不能保证对象有完整的意义,不成熟的使用模式等导致代码疯狂增长,调试维护的时间要得多得多。在说性能之前,先说说你这个比较的来历。据说微软为了证明。net比java好,专门做了这个例子;而java的这个例子好像就是为了教学而写的,很多教学目的的例子是不考虑优化、性能的。
(3) 你希望java的IDE整合。这个是没有必要的,重要的是你理解java有多深以及怎么组织你的代码,即使没有IDE,代码照样能够编译运行的。用winrar打包j2ee的程序和用IDE打包应用程序是一样的。按照你的想法,你是不是也希望服务器都整合由一家公司提供呢?
# mc1035
首先第一点:jsp,servlet,javabean这些最基本的,嘿嘿,就算你是高手的话,在大行的企业级应用的话还是需要框架的,一个好的框架确实能构解决许多问题,你总不能说你写框架吧,那无疑会加大工作量,现在大多企业采取的是折中的办法,就是改别人写好的框架,可要改框架,前提是你对这个框架足够的了解,这就更难了。
关于第二点:俺问问你,如果是企业级项目的话,诸如RMI,EJB,等一些关键技术,这些难道都不需要学么?如果光是使用jsp,servlet,javabean的话,为什么外国人还要写那些框架进行代码封装,他们不就是为了别人使用时可以更简单么!如果要达到一个企业级项目的不用框架是很难的。小一些的项目还行,大的光是MVC模式的设计的编码量就够大的了。还有性能方面,单轮windows,这个东西是微软写的,你说是sun公司对她研究的透还是微软?针对自己东西开发的.net性能上肯定会站上风的。
再说第三点:我并没有提到服务器也要整合,然后是IDE,一个好的IDE能够200%提高开发的速度,就说图形方面:你是经过简单托拽和点击就能实现功能好那,还是要自己一点一点写代码,然后编译,改错再编译好那。还有最重要的是.net的编译环境非常好,你甚是不需要了解太多东西,对于简单的系统,你可以之了解一些语法就哦了。微软什么都提供了。你可以试想一下,如果你是新手,你是希望你点一下按钮程序就能运行那,还是想自己一点一点的组织结构,然后打包发部,调错再打包......
从一个编程语言的普及程度来将,一个好的IDE是至关中要的,而现在的java的IDE虽然已经很好了,但是和.net比起来还是稍微差一些的,这是个客观事实。java要想普及的更好,IDE是必须加以改进的。
最后我再次声明,我并没有说不看好java,实际上我对java很乐观的,毕竟她正在不断改进中,我相信她总有一天会和.net并驾齐驱的
# zqsphere
大型的应用一般不会用这些框架(因为性能考虑);开发人员根据需要选择用一些框架,也可以不选用框架;不用框架并不代表要自己写框架;修改框架的可能性更小:因为能用到多少功能就用多少,不能用就不用!总的来说:要简单要性能好,可以不用框架。你说java复杂,就是因为你把java(j2ee)与这些框架混在了一起。
他们对jsp,servlet,javabean进行封装就是为了展示他们的某个思想,与java的开发并没有必然的关系,也不见得在所以情况下,别人使用起来会简单。
诸如RMI,EJB等一些技术并不是你说的那么复杂,而是它们把一些复杂的东西封装成不复杂的东西了,理解这些东西是需要些时间。我问你,.net里有这些东西吗?要简单多少?ruby里有这些东西吗?又要简单多少?我没有用过这两门语言,我估计在这些语言力没有很统一的这种标准,或者根本就没有提供。
在性能方面,在windows平台下,.net可能是占强项,要是把.net放在sun开发的操作系统上去运行呢?根本就运行不了,.net对其它操作系统的支持也很弱,性能也可能比不上java。
IDE是好。java中的IDE更是百花齐放,你用jbuilder能说jbuilder赶不上vs吗?用eclipse,netbeans也很舒服啊。我就不明白“稍微差一些”那一些是从哪里差来的。
你对java乐观有点盲目。java的关键就是在服务器上表现优异,而且它提供了整个开发所需要的东西。应该是说,看哪天。net有没有机会赶上java。
不得不提一下的是:.net是看到java红,而开发出来的东西。
# mc1035
多谢指点,其实我对.net和ruby也不是很了解,对与java也只是刚起步的阶段,只是在学习中有了点想法就写出来了,现在俺本科还没毕业,所以对大型项目基本上也没有什么经验,但是我同意你的观点,对于大型项目来说,应该是采用框架的一部分,根据功能的不同而改进,欢迎你能再提出些宝贵意见,我会多多学习的。说到jbuilder,我可能是个人感觉,用的时候确实没有vs爽,我最喜欢的IDE是netbeans,谢谢。
分享到:
相关推荐
在深入了解Python的优缺点以及它与Java之间的交互,特别是涉及到Java的jar文件时,我们首先要明确Python和Java各自的特点。 **Python的优点:** 1. **易学性**:Python的语法简单,适合初学者入门,其“易于阅读”...
Java打包成JAR文件是将源代码编译后的字节码和相关资源组合在一起的常见方式,便于分发和执行。以下是对三种不同打包方法的详细分析和比较: 1. **使用Eclipse插件fat.jar打包** `fat.jar`插件允许开发者将所有...
Java三大框架指的是Spring、Struts和Hibernate,它们是Java Web开发中的核心框架,极大地提高了开发效率和代码质量。本文将详细介绍这三大框架的学习方法、优缺点以及它们的基本概念。 首先,Spring框架是Java企业...
Java中static变量的几个优缺点 简单介绍static
Reflection is commonly used by programs which require the ability to examine or modify the runtime behavior of applications running in the Java virtual machine. This is a relatively advanced feature ...
JAVA spring的优缺点详解
Python和Java都是当今软件开发领域广泛应用的编程语言,它们各自有着独特的优点和缺点。这篇文章将深入探讨Python与Java之间的对比,以帮助开发者更好地理解这两者之间的差异,并在实际项目选择中做出明智的决策。 ...
尽管Java具有诸多优点,但也存在一些缺点,如运行速度相对较慢,因为它是解释执行的,而非预先编译成机器码。此外,Java的标准有时并不统一,这可能导致一些兼容性问题。最后,Java的编程环境在早期并不稳定,但现在...
java 的优势和缺点
### JDBC的优缺点 #### JDBC简介 JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,它可以为多种关系数据库提供统一访问接口。通过JDBC,开发人员能够使用Java编写应用程序,与各种类型的...
以下将详细探讨Java 8的一些主要特性及其优缺点。 **1. Lambda表达式** Lambda表达式是Java 8最显著的特性之一,它引入了函数式编程的概念。Lambda允许我们将函数作为一个值传递,简化了匿名内部类的使用。优点...
浅析J2EE与_NET这两种技术的优缺点的文章
Java 五大框架技术选型对比与优缺点 Java 五大框架技术选型对比与优缺点是指 Java 语言中五大框架技术的选型对比和优缺点分析。这些框架包括 MVC、Struts2、Servlet、Filter 和 JavaBean。这些框架都是 Java 语言中...
缺点:需要依赖Java Activation API。 方式三:使用URLConnection.getFileNameMap() URLConnection.getFileNameMap()方法可以根据文件的扩展名来检测文件的ContentType。 ```java public static String ...
Python 相比 Java 的优缺点分析 Python 和 Java 是当前两种最流行的编程语言,都是广泛应用于软件开发的主流语言。作为一门编程语言,Python 和 Java 都有其特点和不足之处。本文将从五个方面对 Python 和 Java ...
"Effective Java读书笔记" Effective Java是一本关于Java编程语言的经典书籍,本笔记主要总结了Java语言的发展历程、静态工厂方法的应用、构造器模式的使用等重要知识点。 一、Java语言的发展历程 Java语言的发展...
### JAVA三大框架优缺点 #### 一、Struts框架优缺点 **优点:** 1. **实现MVC模式,结构清晰:** Struts框架通过分离模型(Model)、视图(View)与控制器(Controller),使得应用程序结构更加清晰,开发者可以...
AWT 是 Java 早期的图形界面设计,但是它存在两个缺点:一是只提供基本的组件,二是不能跨平台。于是,Sun 公司研发了 Swing 组件,弥补了 AWT 的不足。Swing 组件是轻量级的、可跨平台的,提供了许多新的组件,可以...
1. 反射机制的优缺点:反射机制可以动态地调用类和方法,但也可能会增加系统的安全风险。 2. 反射机制的应用场景:反射机制可以用于动态地加载类和方法。 String 1. 字符串常量池:字符串常量池是String类的...