zoukankan      html  css  js  c++  java
  • Java适合做什么[转自ITeye solonote]

    程序员都有一个美好的愿望,希望自己熟悉的编程语言就是银弹,但现实却并非如此.

    每门语言都有它适合的领域,如果我们搞清楚了这些语言的特性,或许我们就不会再讨论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是一门优秀的面向对象语言,语法简洁,规范,适合初学者进行编程学习,

    本文只是我个人的看法,欢迎大家讨论.

  • 相关阅读:
    Educational Codeforces Round 83 --- F. AND Segments
    Educational Codeforces Round 83 --- G. Autocompletion
    SEERC 2019 A.Max or Min
    2019-2020 ICPC Southwestern European Regional Programming Contest(Gym 102501)
    Educational Codeforces Round 78 --- F. Cards
    今天我学习了一门全新的语言
    codeforces 1323D 题解(数学)
    Educational Codeforces Round 80 (Div. 2) 题解 1288A 1288B 1288C 1288D 1288E
    Educational Codeforces Round 81 (Div. 2) 题解 1295A 1295B 1295C 1295D 1295E 1295F
    Codeforces Round #617 (Div. 3) 题解 1296C 1296D 1296E 1296F
  • 原文地址:https://www.cnblogs.com/johnnyflute/p/3127499.html
Copyright © 2011-2022 走看看