当前位置:  技术问答>java相关

我要转向JAVA了但我觉得除了跨平台,真的找不到JAVA的什么比VC好!给我点动力吧!

    来源: 互联网  发布时间:2015-05-17

    本文导语:  ?? | 为什么要学 Java?  如果你常玩计算机,你可能知道 Java 是一个运算平台,而非咖啡或印尼的一个岛。在 Java 技术诞生后的这五年,Java 变成了大家朗朗上口的名词,种种的说法中...

??

|
为什么要学 Java? 
如果你常玩计算机,你可能知道 Java 是一个运算平台,而非咖啡或印尼的一个岛。在 Java 技术诞生后的这五年,Java 变成了大家朗朗上口的名词,种种的说法中,有些是事实,有也一些夸大不实。你可能会想知道:你该不该去学 Java,我给你的答案是肯定的,请听听我的说法。 

Java 是什么? 
你必须先了解 Java 究竟是什么?当人们提到「Java」,他们指的可能是: 

Java 程序语言:一个类似 C++ 或 Smalltalk 的对象导向程序语言。学习 Java 程序语言类似学人类语言,都有一套规则和文法。 
Java 虚拟机器(JVM):用来执行 Java 程序。JVM 有许多平台的版本,比方说 Linux 和 Windows 版。有了 JVM,Java 程序就可以在不同的平台上执行,也就是所谓的「写一次,到处都可执行」。 
Java APIs(指的是函式库的程序设计接口):是一组预先定义好的类别,可以在你的程序中直接使用。这些东西是免费的,功能包含了像是档案存取,网络读写,图形接口等等。 
当人们提到「学习 Java」,通常他们指的是 Java 语言和 API。大家可能对 JVM 所知不多,虽然对 JVM 有基本的认识对 Java 的学习是很有帮助的。 


对象导向程序设计 
对象导向程序设计已经广为接受,凌驾于传统的程序导向程序设计。对象导向程序设计带来许多额外的威力,但对象导向的学习曲线也较陡。如果你已经懂一套对象导向语言,那么你学 Java 就会容易多了。 

如果你不了解对象导向程序设计,你有一个漫长的旅程必须经历。以我自己来说,我花了约四年的光阴,才领悟了对象导向的精髓,不过这四年我的学习是蛮随兴的。如果你正在上好老师的课,或正埋首于一堆好书之中,或许可以缩短到几个月就够了。千万别轻忽对象导向观念的学习,因为 Java 语法好学,但是要写出良好的对象导向程序可不容易。 

  
 

学习 Java 的理由中,有些是技术性的,有些则是非技术性的。我先描述两个程序的特色(垃圾搜集和例外处理),然后我告诉你:为什么在程序设计的领域中,Java 几乎是必备的技能。我也会告诉你 Java 开发工具的信息和它们吸引人的售价。 

感谢老天,有「垃圾收集」真好! 
使用 C++,你可能一不小心就写出会当机的程序;如果使用 Java,情况就大不相同了。C++ 程序的头号 bug 是内存配置的失误。C++ 的程序员很辛苦,必须直接配置一块内存,这块内存不用时还必须主动归还。这听起来简单,做起来可不容易,所以 C++ 的程序常常会耗尽内存。
Java 就不同了。虽然你仍需要主动配置内存,但此内存一旦不再使用时就会自动释放,这就称为「垃圾收集(garbage collection)」。垃圾收集机制使得写程序时轻松许多,虽然因此执行时效率稍微变差,但影响可能轻微得你根本感觉不到。 

例外处理机制让程序更稳固 
不管是什么程序语言,都可以轻易地写出很糟糕的程序,但是使用 Java 想写出很糟糕的程序就不容易了。原因之一是垃圾收集,原因之二是「例外处理机制」。良好的程序员写出来的程序应该在一些意外状况发生时程序依然正常。档案无法开启,怎么办?万一读档读到一半时出问题,怎么办?如果你是用 C++ 或其它语言,你可能会疏于考虑而没进行这些意外状况的处理。你可能会辩白:「我只是在试试看这样写能否行得通,我稍后会回过头来把程序改得更周延」。但结果通常是:程序执行正常后,你又会忙着写新的程序,这么一拖后来就忘了回头处理还不完整的部分。问题终究还是会爆发出来,你终究还是要面对烂摊子。
Java 强迫你在一遇到有可能出问题的地方就要准备好因应之道。Java 的 method 可以丢出例外,用来通知呼叫者程序出状况了,这是相当好的机制。即使你的程序要开启档案,你都必须在程序中写好例外处理方式。 

到处都是 Java 
到处都可见到 Java,这是一大好处。如果你靠写程序为生,你可能迟早都会接触到 Java。Java 已经渐渐地渗透到各领域,你可以写出 Java servlet,将其挂在 Apache 或其它网页服务器上,你可以写出 Java applet,在网页浏览器上执行。你甚至可以用 Java 写出数据库的 stored procedure,然后安装到 Oracle 8i 上。
我打赌,你身边使用 Java 的同事也会渐渐多起来。1997 年开始,许多大学已经用 Java 取代 C 当作程序设计教学的语言。如此一来,Java 变成了程序员共通的语言。如果学习 Java 所为你带来的唯一好处是方便和同事沟通,那么也值得。
最后,我要提的是:「写一次,到处都可执行」。Java 早期版本(1.0 和 1.1)比较无法完全跨平台,但现在就好多了。如果你想散布一个程序到多个平台,又不想改写大部分的程序,那么 Java 是绝佳的选择。Java 2 现在已经可以在 Linux、许多 Unix、和 Windows 上执行了。
MacOS 9 的 Java 仍在 1.1 时代。然而,Apple 的下一代操作系统 OS X 是以 Unix 为核心,这使得移植软件的过程大大简化了。我不知道 Apple 官方的说法为何,但是在今年三月的时候,我就已经看到 OS X developer release 3 上面执行着 Java 2。我很有自信 Java 2 将可以在 Linux、OS X、和 Windows 上执行,这样已经涵盖了大部分的计算机世界。 

Java 免费 
Sun 提供 Java 相关的工具,让你可以开发与执行 Java 程序。你无须支付授权费,你也不用花钱买 Java 开发工具。当然,Sun 这么做自有他们的如意算盘,Scott McNealy(Sun 的老板)恨不得能征服世界,但是不管怎样,我们的的确确是不用付钱给任何人就可以享受 Java。
而且,Java 的 API 是珍贵的宝藏,让我们可以轻易地写出功能强大的程序。想写网络程序?已经有 API 了!想连接数据库?已经有 API 了!想写 GUI 程序?已经有 API 了!或者是想做数字影像处理、音乐文件处理、字符串剖析、数字签章?通通有 API 了!身为一个程序员,有这么多好用的 API 真的是再高兴不过的事了,这些 Java API 让我们不用「重新发明轮子」,省却不少功夫。Java 有这么广泛、标准、先进的 API,简直是让 C++ 程序员忌妒死了。C++ 程序员常要花时间学一些 C++ 类别库(比方说 MFC),然后到 Linux 上又得归零学另一套(因为 Linux 上没有 MFC)。一旦你学会了某 Java API,到哪儿都一样不会变动,不用重学。
最后,Java 的信息文件都可从网站上免费取得。如果你有网络而且有空,你可以直接透过网络学习对象导向、Java 语言、以及 Java API。Sun 在网站上放了一大堆很棒的线上教材。如果你习惯看书来学习,市面上有一堆 Java 的书可以参考(比方说,我写的 Learning Java)。 

日光浴 
Java 比其它语言来得有趣许多。Java 程序语言有许多「防呆装置」让你不会在程序中犯下大错,所以你可以很快地把程序写完,而如果使用其它语言必须要花更多时间。一份有趣的资料显示:用 Java 写程序比用其它语言快了四到十倍。我知道这听起来很不可思议,不过你可以问问周遭懂 Java 的人看看。不用花很多时间找 bug,意味着你可以在海滩上休息更久,意味着你可以接受阳光的日光浴而非「屏幕的日光浴」。用 Java 为你赚进的银两为自己买一副太阳眼镜吧! 

本文作者:Jonathan Knudsen(着有「Learning Java」、「Java 2D Graphics」等书)
本文译者:蔡学镛 


    
 
 

您可能感兴趣的文章:

  • 很多书上讲Linux为Java提供内核级支持,可是为什么我要用时还得装java虚拟机?
  • 我要生成java 的文档在dos 下用什么命令.
  • 我要拜师! 我想找一个人带我进JAVA大门,畅游JAVA世界,可以吗,希望和他经常交流!
  • 我要学java2,因为现在java太好啦,请您提点建议。
  • 我要学Java了,可是不知怎末学
  • 我要学JAVA,从哪里学起?
  • 我要学习 java,但不知道java 最高版本是多少啊?我应学哪个版本好呢?还有那里有电子版的中文书籍下栽啊?谢谢
  • 我要学JAVA,从那里下手,学vj++ 还是j++builder
  • 有没有人做过JNI,我要在C++中调用java类方法,那个javai.dll在那里啊?(重分向谢!)
  • 很菜的问题,我要学习java以便到广东工作,应该怎么快速搞定它。
  • 请介绍一两本精典的JSP书籍,我要去买了,已有JAVA语言基础!
  • JAVA程序编译时,有时会提示你要用try...catch...,JAVA怎么知道我要用try,有个标准吗?
  • 我对JAVA一窍不通,可惜别人却给我一个Java的project,要我做一个安装程序,请问哪里有JAVA INSTALLER下载,而且我要不要安装java的sdk才能完成此项任务?
  • tomcat401的问题:启动是告诉我要“set java-home",不知为何,怎么办才好?帮帮忙,现在只能给32分
  • 我要用Java编写一个通用权限管理模块,大伙有什么好的建议?
  • 在我的java程序中,我从数据库中得到一批数据,不能确定是多少个,我要把它保存到我的java数组中,可是怎样才能向C++中的数组一样可以自由分配空间,在java中我必需预先指定大小,不会一定要用java中的那个可改变数组大小的类吧?
  • 我要在转到Red Hat下面作Java开发,我该如何安装Jdk和Jbuilder呢?
  • sd我要暂时离开心爱的java啦,前段时间找工作把大家也包括我自己给烦的!
  • 大虾救我,我要死了,为什么我的java.util.date包很多方法不能用?
  • 我要晕倒了,怎么在java.sun.com/products/servlet下找不到servlet的开发包在哪下载,1个小时都浪费了,帮忙啦*_*
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 进程间通信:pthread_cond使用在线程间,我要进程间条件同步(没有情缘关系的进程),采用什么方呢?也就是说我要在UNIX实现WIN32上命名Event的功能
  • 我要懂什么才行呀?
  • DHCPD服务开启不了,系统提示:我要声明某个网卡(因为我有两块网卡),不知道怎么搞
  • 怎么跟我要activation key??
  • 如果我要用openFileDialog我应该import哪些?
  • 请问我要加载内核模块 ipip.o 怎么做
  • 我要在 linux下 使用 OCI driver , 该如何配置?
  • 怎么写linux和windows2000的架构区别!我要作业!谢谢
  • [怪象论坛]为什么总有那么多“我要……”?
  • 我要能访问以汉字命名的网页吗?
  • 我要处理用户输入的一个字符窜。怎样写用户输入这段代码?
  • 请问:再局域网中怎样用代理服务器,我要用GOOGLE!!
  • 我要为读写一个数据表做一个进度条如何做
  • 我要学UNIX了,请问该从哪里开始?
  • 我要tcpdump的安装包, 大家帮我找找, 哪里可以下载????急
  • 我要實現訪問NTFS?
  • 我要在aix下debug跟踪程序C++,需要安装什么东西?
  • 请问一下,在Solaris中我要如何安装MySql
  • 我要怎样让它变成3?
  • 我要在linux上安装一套C++的开发工具.有些入门问题.


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3