`
javawebsoa
  • 浏览: 410349 次
社区版块
存档分类
最新评论

对Java的一点看法

 
阅读更多

这段时间没事的时候写写Java,当然,工作还是用C#,虽然在很多资深Java人士看来,还远远不够.但说实话,我对此不以为然.能解决问题的东西,其实与语言本身是没有多大关系的.我也一直想写一些编程要点学习系列的东西,但因为比较懒,一直都是只有想法,没有行动(后面应该会写微笑).下面是对Java的一点看法,也希望大家指正(这篇文章主要是写给那些想多了解几门语言,同时没有语言控的同仁):

1)Java 真正的优势不在于其技术和成本优势,而在于其开源和跨平台理念.
  从语言技术本身而言,Java跟C#比没有任何优势,毕竟C#(包括Dotnet体系)别人是后来者,而且深度借鉴了很多语言的长处。而对于一些框架性的东西,一些设计模式来说都是与语言无关的,你能做,别人也能做。C#虽然在语言上占有一定优势,但这并不等于在技术上就比Java好,因为事物往往是两面性的,长短也是相对的。因此在技术上,Java和C#的差异其实可以忽略不计。
  成本的比较其实是非常难的,但从天下没有免费的午餐来讲,Java并没有本质上的成本优势,因为让你盗版(微软的策略)和开源策略(低级的可以免费用,高级的或者商业的多要收费)其本质上有异曲同工之妙(大家可以思考一下),而Java的开发速度要慢些,人力成本相对较高,都会推高整个项目的成本。
  而Java的优势其实在于开源(不等于免费)和跨平台的理念,实际上真正能不能跨平台,需不需要垮平台,是不是真的都是免费的,其实都不是关键。关键是这种理念给人的一种预期,不要小看这种理念所带来的预期,作用大着呢。为什么呢?其实这就是人性,人其实是感性和理性的混合体,而且理性并不是第一感的,也就是说大部分人的感性多于理性。在这种情况下,理念的作用就非常大,因为理念给人的作用多是感性的。就拿跨平台来说,如果理性的分析一下,你会发现,除了少数应用,大多数(至少80%以上,Web应用就更不用说了)并不需要跨平台(何况就是跨平台,你其实还得安装一个虚拟机,虚拟机本身没法跨平台的);开源也是一样的道理,收费的就不讲了,因为收费的开源就是公开让你盗版。免费的开源看起来很美丽,也确实有利可图,但免费又好用的东西其实很少(这其实也是利益决定的),很多免费的东西都同时有收费的版本,免费的能用,但没有保障,而且功能一般都有限,你真正做商业应用,选择收费的版本的概率要大很多(至于为什么,大家可以思考)。这种策略其实就是一种利用人爱贪小便宜又怕事的心理。这不Oracle公司对JVM也开始采用这种策略。本质上来讲,免费是违背人性而又符合人性的(人性的贪婪),其实就是都希望别人免费,而希望自己的收费。但最终都是要付出的,有付出才有收获嘛。
  开源和免费同时带来了另外一个问题,就是Java体系的派系林立,导致各种框架,平台林立,各种名次概念泛滥,这无形中增加了学习成本和移植成本。说实话,Java之所以比C#难学,根本点就是在这里,基础的学习都不难,但你要搞定这些框架和平台,就比较麻烦,因为这些框架和平台本身并不是通用的(本质上,这些公司跟微软一样,都有自己的利益考虑),而且Java的框架和平台非常喜欢配置化,很多东西喜欢拐弯抹角,而且这种配置化往往跟框架和平台是密切相关的,这就对学习和使用增加了很多难度。在这里,也不是说配置化不好(配置化的好处也还是很多的),但凡事都要讲个度,因为一旦走向极端(完全配置化和零配置),我们就往往会陷入反28定律。

  当然,在这里我并不是说开源和免费不好,也不是批评Java体系,仅仅是就事论事,因为作为程序员,需要理性的看待这些东西。

2)编程语言就是一个工具
 编程语言就是一种工具,当然,多了解一些工具总不是坏事。用熟一门工具,再学另外一门工具也不是很难的事情。当然,学习语言不要纠结于语法本身,能写出系统,解决问题就行。

3)学习Java要避免纠缠于配置化细节,了解其本质后,不需要搞得太细,因为每个框架和平台都不相同,真正用的时候找个手册即可。当然,自己也可以学习别人用配置化来解决一些问题的思路。

PS:其实人性是复杂的,并不完全是贪婪和懒惰这么简单。  

PS:理念会变成你的感觉,多了就会变成潜意识,好听点是一种营销手段,说白点就是洗脑.乔布斯深谙此道,中国的360周也深谙此道....深谙此道的且有行动力的基本都会成功.政治上就更不用说了.

分享到:
评论

相关推荐

    JAVA 学习之路

    Java是个平台,我只想说说我对学好Java的一点看法,希望对初学者有所帮助。 1. 思考一下 学习Java之前,先别急,静下心来好好想想: 1)你对学习Java是否有兴趣? 2)你是否能静下心来坚持不懈地学习? 嗯,这...

    java学习方法

    在这里我只想补充一点看法,很多人学习Java是从《Thinking in Java》这本书入手的,但是我认为这本书是不适合初学者的。我认为正确的使用这本书的方法应该是作为辅助的读物。《Thinking in Java》并不是在完整的介绍...

    java自学之路(一)

    我只想说说我对学好Java的一点看法,希望对初学者有所帮助。

    Java学习路径(二) 书籍篇.txt

    在这里我只想补充一点看法,很多人学习Java是从《Thinking in Java》这本书入手的,但是我认为这本书是不适合初学者的。我认为正确的使用这本书的方法应该是作为辅助的读物。《Thinking in Java》并不是在完整的介绍...

    java-servlet学习笔记

    看过方立勋老师的课程之后 做的一点小笔记 以后拿出来复习复习 不对之处 请见谅 本人只是默默的一只菜鸟

    JAVA与NET讲座简介

    我的大学老师给我的一点资料,有关JAVA和.NET发展史和实际应用的详尽讲解,和老师自己对行业前景的看法和对我的建议。

    java学习指南 完整版

    学习一门新的知识,不可能指望只看一本,或者两本书就能够完全掌握。... 在这里我只想补充一点看法,很多人学习Java是... 本书也是一本学习使用Java 2的很好的参考书,还可以作为一些疑难问题的速查手册

    Java春招面试突击pdf学习文档

    但是其实不是这样的,八股文只是你的 基础能力,稍微有一点水平的面试官都不会去像一个提问机器一样,一道一道题去问你,而是希望通过对话去了解你对项目、对技术的看法,以及你解决问题的能力,因此需要从面试底层...

    蚂蚁金服面试分享.pdf

    8> 对设计模式的看法和认知 9> 关于树的算法题-二叉树的锯齿形层次遍历 为什么选择编程这条路? 2> 平常有没有自学,对待自学有没有好的方式方法 3> 平常喜欢看些什么书籍 项目考察:(面试官会挑选你在电话中没有...

    HR面试100问(完整版-含回答提示).docx

    4、你对加班的看法?  回答提示:实际上好多公司问这个问题,并不证明一定要加班。 只是想测试你是否愿意为公司奉献。  回答样本:如果是工作需要我会义不容辞加班。我现在单身,没有任何家庭负担,可以全身心的...

    Spring、SpringMVC和Mybatis框架整合包

    我们看招聘信息的时候,经常会看到这一点,需要具备SSH框架的技能;而且在大部分教学课堂中,也会把SSH作为最核心的教学内容。 但是,我们在实际应用中发现,SpringMVC可以完全替代Struts,配合注解的方式,编程非常...

    C语言培训教程.doc

    10、气象数据中心项目开发 16 5、 毕业总结 16 各种技术方向分析 对大部分即将进入IT行为的人来说,普遍存在一个问题,如何选择技术方向,以下谈 谈我个人的看法. 1。1、JAVA 优点 几乎可以做任何事情,适用于各种操作...

    Android-Patterns:Android项目

    为了做到这一点,我们将尽可能地一次处理每个模式,而与其他模式无关。 我意识到有时候这不可能。 例如,为了实现内容提供者,首先需要实现一个数据库。 但是我们将尽量减少依赖性。看法[LauncherIcon]( )-将启动...

    asp.net知识库

    我对J2EE和.NET的一点理解 难分难舍的DSO(一) InternalsVisibleToAttribute,友元程序集访问属性 Essential .NET 读书笔记 [第一部分] NET FrameWork的Collections支持 .NET的反射在软件设计上的应用 关于跨程序集...

    IM_client_demo:基于TCP的基于客户端的即时消息传递的示例

    2.TCP和UDP的选择,从使用上面来说,个人更加倾向于TCP,因为协议本身能够保证报文传递的有序性而不需要程序上面对于报文有额外的操作,当然UDP的好处就是快、开销小,这样对于服务器来说可能会好一点 3.报文协议的...

    MVVMBaseLib:用于mvvm架构的包装器

    要牢记的重要一点是,视图模型不依赖于视图。 数据绑定 在Google I / O 2015中引入的数据绑定库可帮助编写声明性布局,并最小化绑定应用程序逻辑和布局所需的粘合代码。 相依性 首先,将存储库添加到您的根build....

Global site tag (gtag.js) - Google Analytics