程序员都有一个美好的愿望,希望自己熟悉的编程语言就是银弹,但现实却并非如此.
每门语言都有它适合的领域,如果我们搞清楚了这些语言的特性,或许我们就不会再讨论c++与java的优劣,不会再因为看到几个JavaFX或者Swing的特效,就会感到银弹出现了,就感到暴雪的下一个游戏会用Java来开发了.
我们应该讨论的是这些技术适合于哪种应用场景,在什么样的场景下用哪种技术是高效的,这样对于初学者来说,可以让他们更理性的认识到每一种技术的领域,而避免对于语言优劣的讨论,与对某种技术的盲目崇拜.
1.Java很适合企业级应用的语言.
企业级应用对部署成本并不看重,一个应用部署几分钟和几小时的区别并不大,部署的复杂程度也和最终用户关系不大,因为这一切都不需要最终用户自己动手安装.
企业级应用不会对硬件要求太苛刻,不会关心你要用400m内存,还是1G的内存,如果有需要,还可以增加机器.只要这个应用能够稳定的运行,能够完成应用的目标.
而Java对于企业级应用又有一套成熟的解决方案(J2ee),还有众多厂商的支持,再加上Java的垃圾回收机制,对于指针的一些安全措施,大大减少了编程的复杂程度,而且Java是Open的,有很多优秀的开源组件可以使用.
因此Java是适合企业级应用的语言,如果企业级应用需要富客户端,那么使用Swing/JavaFX也是正常的.
在分布式的企业级应用中,通常使用富客户端的情况是因为BS结构无法满足,所以才会采用,至于富客户端vsBS的优劣,这里就不说明了.现在的丰富的RIA技术又使得Swing在分布式企业应用市场更加缩水了,典型的例子就是applet很少被使用了.
2.Java还可以开发一些工具类软件
Java的跨平台特性对于这些工具是很有意义的,因为使用者可能使用不同的操作系统.用Java可以获得更多的用户.
当然我们在使用Java开发一个工具时,就会损失一小部分其他语言的用户,比如一个.net程序员,它在找一个开源的网络嗅探工具,它可能找到Packetyzer,也可以能找到JpcapDumper
.它可能会先尝试前一个,因为Packetyzer不需要他下载JDK.
3.关于Swing和SWT
在工具类的开发当中,你可以选择Java的两套GUI,Swing和SWT.
这两个Java的库并没有太多可以讨论的地方,SWT比Swing更容易让人接受,这一点可以从Eclipse和NetBean的一些用户统计数就可以得出.
我无法确定SWT技到底给Eclipse的使用率带来多少作用.但是我可以肯定的是,大多数人喜欢在熟悉的环境下工作,SWT在这一点上是有优势的.(Swing即使使用本地皮肤作出来的软件还是会有一些差异)
当然如果你使用SWT,你必须手动去释放SWT所占用的图形资源.Swing则不需要.使用SWT你还必须在不同平台包含不同的SWT类库.这就比Swing要麻烦.
这两个IDE好坏没有什么可讨论的,建议你两个东西都用一下,你自然就知道你适合使用哪一个IDE.
4.
Java
不适合做
个人桌面应用开发
个人桌面应用与企业应用相比有很多不同:
a.个人桌面应用对于软件体积是十分关注的,这一点并不是因为我们的硬盘不够大,而是因为小的软件更容易被下载.一个1mb的软件和一个15mb的软件是对于个人用户来说是有明显区别的.有一个翻译软件叫灵格斯,其中一个非常重要的特性就是小.
Java的Jre6是15.5MB.如果是一个400mb的软件,或许这15mb并不多,但对于一个1-2mb的软件来说,这15mb就很多了.
b.安装的复杂程度,个人用户并不是专家,安装的复杂度,时间长短对于一个软件来说都非常重要.一个安装20秒的软件比一个需要安装1分钟的软件有更强的竞争力.JavaFX需要客户端安装Jre1.5以上版本,用户通过JavaFX的提示,到sun公司上下载并安装,通常会使用sun公司的在线安装功能,安装的时间大概是半小时左右.
c.软件的执行速度和计算机资源的占用率,这一点在计算机不断增强的硬件性能上看来,被弱化了一些,但是在个人桌面应用中,往往会打开很多个其他应用,更少的计算机资源占用会使产品获得更强的竞争力.Java产品总是要占用大概80mb的内存.
5.Java不适合做桌面游戏
Java对OpenGL支持不好,现在虽然有JavaOpenGL,但是支持还是很弱,没有一个强力的组织推动JavaOpenGL.而C++在这方面的类库却是非常丰富. 微软有自己的DirectX.在这一方面,Java支持太少.因此对于游戏编程来说,选择C++会比Java好很多.
有一些Java的图形游戏Demo,这些产品看起来更像是在表达一种"我也能"\"我也可以做游戏"这样的声音.而往往看到这些Demo的初学者就会产生错觉,感觉银弹又要出现了.如果你了解了osg,你或许就会觉得Java图形编程与c++的差距.
从语言的发展趋势上来看,新的语言正在蚕食着旧语言的应用领域,在没有java php
asp的时候,大家都还在用cgi编程,这些语言的出现,提高了生产效率,市场开始认可他们,有大公司开始支持他们.更多的人就会使用它.c/c++语言
的使用范围慢慢在缩小.这是客观存在的事实,即使你是c++崇拜者也无可否认.当然即使你是Java崇拜者,你也不得不承认c/c++语言目前在图型编程
/游戏开发/硬件驱动...等等领域还是主流.
未来的某一天,有可能Java很好的支持个人桌面开发.但这不是今天,也不是下一次JavaFX展示它"强大界面"的时候.
6.
Java
不适合做
小投入型网站
服务器的租用上,支持Java的服务器要比支持PHP/ASP的服务器租用费用高很多.
你可以在网上搜到一堆免费的PHP/ASP host,但你很难找到一个免费的JSP host.
如果你要做一个网站,又不想投入很多资金,那么请不要使用JSP/J2ee.
PHP是一个不错的选择,因为它是Open的.
7.Java适合编程初学者
Java是一门优秀的面向对象语言,语法简洁,规范,适合初学者进行编程学习,
本文只是我个人的看法,欢迎大家讨论.
- 大小: 30.6 KB
分享到:
相关推荐
非常好的java笔记适合初学者,培训班老师上课给的笔记,非常细致全面,适合初学者
适合java初学者使用包括一些java试卷课件以及程序源代码希望大家能够喜欢
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以...
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以...
特别适合java新手巩固java基础的项目,总共有8个项目的全部代码,都可以直接运行,代码有注释。
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以...
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以...
一个小的贪食蛇代码 自己纯手打 不喜勿喷 运行需要java环境 虽然做成了.exe格式不知道好不好用~ 希望喜欢的大家可以一起交流 很适合初学者哦~
Java做的连连看,实现了基本的连线,扫描等等,值得初学者一看
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以...
Java GUI做的课程设计,以前做的,放出来共享下,只适合初学者看看
本书通过丰富、完整、富有代表性的实例,展示了如何提升Java应用性能,并且给出了优化前与优化后的Java应用程序的性能差别,以实际的实例与数字告诉你,为什么不可以这么做,应该怎么做,深入分析了影响Java应用程序...
很适合Java初学者的阶段测试,做做感觉会不一样
学java不知不觉也已经三年了 从不知java为何物到现在一个小小的...很多人对java感到茫然,不知所措,不懂java能做什么 即便知道了java很有用,也不清楚该从哪里入手 所以就有了 java入门难 这一说法
基于SpringBoot项目博客系统-包含前台后台前端后端-适合作为Java学习的第一练手项目,适合做课程设计或毕业设计代码 基于SpringBoot项目博客系统-包含前台后台前端后端-适合作为Java学习的第一练手项目,适合做课程...
这块java的元代吗,是我自己闲着捂脸的时候,管贴吧的时候总有新人在请求一些适合初学者的代码,所以我就随便写写了,适合初学者的java扫雷源代码
java ·基础题目 刚学Java的可以做做。。。
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以...
一个用JAVA做的国际象棋,适合刚学JAVA的人,也可做课程设计用