`
solonote
  • 浏览: 89971 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Java适合做什么

阅读更多

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

 

每门语言都有它适合的领域,如果我们搞清楚了这些语言的特性,或许我们就不会再讨论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
分享到:
评论
13 楼 李_俊 2012-09-04  
很不错啊,知道每一种语言的优劣,知道开发的项目大小、成本(时间、人力、物力、财力等),然后选择适合的语言。
不同语言在同一个代码量级别(代码量同样或相近),其成本不同。
感觉好多东西,特别是很多好东西,都是利益驱动,所谓的免费、开源不过是相对罢了。
如果没有利益驱动,那么java就无从诞生,如果没有利益那么就计算机都有可能不会诞生吧。
如果有足够利益驱动的话,java应该可以打败几乎所有高级语言了,市场占有率可以打到90%以上了。
12 楼 whitesun 2009-08-13  
呵呵 各有各得用武之地  发挥各自的所长就可了
11 楼 eclipse2008 2009-06-30  
适合做J2ME
10 楼 solonote 2009-06-28  
ray_linn 写道
企业级应用不会对硬件要求太苛刻,不会关心你要用400m内存,还是1G的内存,如果有需要,还可以增加机器.只要这个应用能够稳定的运行,能够完成应用的目标.


----- 这个显然是误解,企业核心服务器的采购费和维护费通常都是沉重费用。


显然,你完全没有理解我要表达的意思。
我没有说,企业级应用不关心硬件的成本,服务器的成本。
我要表达的是,在企业级应用中,Java语言写出来的东西可能会多占用一些内存,部署成本会高一些,但这并不是企业级应用的关键。但对于桌面程序来说,Java多占用的一点点内存就对用户选择它起到了很大影响。

反过来说,如果使用Java语言进行企业级开发需要投资昂贵的硬件费用,那么使用其他语言也不会减轻多少这种费用的付出。

欢迎你继续拍砖,我乐意解释我文章中可能会有歧义的地方。
9 楼 solonote 2009-06-28  
ray_linn 写道
solonote 写道
这不是容易不容易的问题,而是做不做得到的问题
c# 与 java 只是看你熟悉哪一个,熟悉的就是简单的。我用过c#和java,并不觉得c#要比java容易多少
问题的关键还是java做桌面开发,程序运行太占内存,外加需要jre支持


你真的用过么??。。。。怀疑ing....


我做过一段时间的wpf编程,如果有兴趣我们可以讨论讨论WPF.我个人确实没有觉得c#要比Java容易多少,当然我基本没有能够用到WPF现有的组件,我们的组件定制要求比较大,基本都是自己实现的。
另外我做过两个Eclipse RCP项目,熟悉SWT编程。以上的事实用来消除你的怀疑。

另外,C#比Java做桌面开发快,这样的论题,是需要很多假设的前提条件。
比如
一个只会C#的程序员
一个熟悉C#图形编程,但只做过JSP编程的程序员
一个用了C#10年,但只用过半年Java的程序员
...等等
如果条件变为 “一个做了Swing 10年,但完全没有学过C#的程序员”呢
这种假设条件实在太多,为什么语言之间的比较没有意义,就是因为一旦前提条件改变,那么结论就不成立了。

我这篇文章也只想说,能与不能,适合与不适合的问题,并不想讨论哪门语言好坏这种不会有结果的问题。


8 楼 ray_linn 2009-06-28  
solonote 写道
这不是容易不容易的问题,而是做不做得到的问题
c# 与 java 只是看你熟悉哪一个,熟悉的就是简单的。我用过c#和java,并不觉得c#要比java容易多少
问题的关键还是java做桌面开发,程序运行太占内存,外加需要jre支持


你真的用过么??。。。。怀疑ing....
7 楼 ray_linn 2009-06-28  
企业级应用不会对硬件要求太苛刻,不会关心你要用400m内存,还是1G的内存,如果有需要,还可以增加机器.只要这个应用能够稳定的运行,能够完成应用的目标.


----- 这个显然是误解,企业核心服务器的采购费和维护费通常都是沉重费用。
6 楼 solonote 2009-06-27  
这不是容易不容易的问题,而是做不做得到的问题
c# 与 java 只是看你熟悉哪一个,熟悉的就是简单的。我用过c#和java,并不觉得c#要比java容易多少
问题的关键还是java做桌面开发,程序运行太占内存,外加需要jre支持
5 楼 liomao 2009-06-26  
觉得写得不错。
Java 用来编写桌面程序很少,C#写比他容易多了。
开源是他的优势,大企业应该Java应该比较多。
4 楼 solonote 2009-06-25  
骗钱...?是什么专业术语
3 楼 抛出异常的爱 2009-06-25  
骗钱   
2 楼 442917934 2009-06-25  
我刚刚接触Java,上面介绍的比较多,日后我再去了解.
1 楼 fehly 2009-06-24  
说的很好很全面啊整理的真不错

相关推荐

    非常好的java笔记适合初学者

    Java编程语言是目前全球最流行的编程语言之一,尤其在企业级应用开发中占据主导地位。这份"非常好的java笔记"无疑是初学者踏入这个领域的宝贵资源。笔记由培训班的专业老师编写,内容详细且全面,旨在帮助初学者系统...

    自己用java做的聊天系统

    标题中的“自己用Java做的聊天系统”表明这是一个使用Java编程语言开发的聊天应用程序。聊天系统通常涉及客户端和服务器之间的通信,允许用户通过网络发送和接收消息。Java因其跨平台的特性,成为构建这类系统的常用...

    Java学习笔记适合java初学者使用

    【Java学习笔记】是针对Java初学者的一套全面的学习资源,旨在帮助新手快速掌握Java编程基础知识。这份资料包含了丰富的学习内容,如Java语言的核心概念、语法特性、面向对象编程思想等,同时也融入了实践性的练习,...

    java做的时钟

    本教程将聚焦于一个简单的Java项目——“java做的时钟”,这非常适合初学者入门学习。 首先,我们需要理解Java Swing库,它是Java提供的一种用于构建图形用户界面(GUI)的工具包。在“java做的时钟”项目中,Swing...

    java实现的教学管理系统——适合java进阶入门者

    在本项目中,"java实现的教学管理系统"是一个适合Java初学者深入学习的实践案例。它涵盖了面向对象编程、数据管理以及简单的用户交互等基础概念,是理解Java编程语言特性和应用的良好起点。以下是对这个系统及其相关...

    java做的闹钟

    "java做的闹钟"是一个利用Java技术实现的简单应用,它具备基本的闹钟功能,比如定时提醒、声音播放等。这个应用可能包含了Java多线程、定时任务、音频处理等多个方面的知识。 1. **Java多线程**:在Java中,多线程...

    java源码包---java 源码 大量 实例

    util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以...

    java 做的连连看

    Java是一种面向对象、跨平台的编程语言,非常适合开发这种类型的游戏。下面将详细讨论如何用Java实现连连看及其涉及的关键知识点。 1. **图形用户界面(GUI)** - Java提供了多种库来创建GUI,如Swing和JavaFX。...

    java做的聊天小程序

    总的来说,这个“java做的聊天小程序”项目涵盖了Java的基础语法、网络编程、GUI设计、数据交换、并发处理、安全性等多个重要知识点。通过深入理解并实践这些技术,开发者不仅可以创建出功能完善的聊天应用,还能...

    java 实现 连连看 适合初学者(src)

    【标题】:“java 实现 连连看 适合初学者(src)”是一个基于Java编程语言实现的连连看游戏项目,适合初级Java开发者学习和实践。这个项目的核心是使用Java的基础语法和面向对象的设计来构建一个可玩的游戏。通过这...

    java做的记事本

    标题中的“java做的记事本”指的是一个使用Java编程语言实现的简单文本编辑器,类似于Windows操作系统中的记事本程序。这个项目可能是为了帮助初学者理解Java基础、GUI(图形用户界面)编程以及事件处理等概念而设计...

    java做的世界杯程序

    Java是一种广泛使用的面向对象的编程语言,以其跨平台性和高性能而闻名,非常适合开发这种类型的应用。 描述中提到的“简单易理解”,意味着程序的代码结构清晰,注释可能充足,对于初学者或中级开发者来说,很容易...

    java漂亮软件界面 超酷可更改做java软件界面模板

    本资源包含一个"java漂亮软件界面 超酷可更改做java软件界面模板",旨在为Java开发者提供一个美观且功能全面的基础框架,适用于构建Java考试系统或者其他需要酷炫界面的应用程序。 首先,我们要讨论的是Java GUI...

    java语言做的教务管理系统

    2. MS SQL Server数据库:作为关系型数据库,SQL Server在数据存储、查询和管理方面表现出色,尤其适合大型、高性能的教务管理需求。 3. 前端界面:通常采用HTML、CSS和JavaScript,配合React、Vue或Angular等前端...

    Java测试题,适合初学者测试

    这些是Java初学者在做题时可能会遇到的基本知识点,包括JVM的工作原理、Java源文件的结构、基本数据类型、控制结构、类和对象、包和导入以及变量作用域等。熟悉并掌握这些知识点对于初学者来说至关重要。

    java做的OA系统

    Java作为一门面向对象的编程语言,具有跨平台、安全性高、性能稳定等特点,特别适合构建大型复杂的企业级应用。在OA系统中,Java的主要应用体现在以下几个方面: 1. **MVC架构**:Java的Spring MVC框架常用于构建OA...

    java初学必做的实验

    这个名为"java初学必做的实验"的资源显然旨在为新手提供一个系统化的学习路径,帮助他们从零开始逐步掌握Java编程。下面将详细阐述Java的基础知识,以及如何通过实践来加深理解。 首先,让我们从基础开始。Java是一...

    Java做的连连看值得一下

    "Java做的连连看"是一个基于Java语言实现的经典休闲游戏,它可以帮助开发者巩固面向对象编程、图形用户界面设计以及事件处理等基础知识。下面我们将详细探讨这个项目中的关键知识点。 首先,连连看的实现主要依赖于...

    用Java做的一个聊天程序chatW

    Java作为一种广泛使用的编程语言,因其跨平台、面向对象的特性,非常适合用来开发聊天程序。在“用Java做的一个聊天程序chatW”中,我们可以深入探讨以下几个关键知识点: 1. **Java网络编程基础**:Java提供了...

    java语言做的魔板小游戏.zip

    java课程设计大作业,java、算法练手项目,适合初学java、数据结构的同学拿来学习研究,基于java、GUI开发的小游戏,程序都经过测试,可以直接运行,资源含程序运行所需的源码、资源文件等全部数据,有需要的可放心...

Global site tag (gtag.js) - Google Analytics