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

对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周也深谙此道....深谙此道的且有行动力的基本都会成功.政治上就更不用说了.

分享到:
评论

相关推荐

    电影票房.csv

    电影票房

    ASP.NET技术在网站开发设计中的研究与开发(论文+源代码+开题报告)【ASP】.zip

    ASP.NET技术在网站开发设计中的研究与开发(论文+源代码+开题报告)【ASP】

    WebShell-Password.txt

    WebShell-Password

    基于 Unet++ 对自动驾驶车道线分割实战【包含数据集、完整代码、训练好的结果】

    基于 UnetPlusPlus 网络自动驾驶车道线分割实战 代码均为手写,全网无重复,训练自己数据很简单,只需要摆放好数据即可,具体参考README文件,小白均可使用 代码详细介绍:https://blog.csdn.net/qq_44886601/article/details/138858574 数据集:自动驾驶车道线分割(2类别,约3200张数据和标注图像) 网络仅仅测试30个epoch,全局像素点的准确度达到0.995,精确度为0.907,召回率为0.908,dice为0.91,训练epoch加大的话,性能还会更加优越! 代码介绍: 训练过程提供了多种优化器选择(Adam、SGD、RMSProp),损失函数采用BCE 逻辑损失,学习率的衰减提供了常规恒定lr、余弦退火算法、以及step学习率衰减。可以自行选择 【训练过程会生成最好和最后一个权重,以及数据预处理完的可视化效果图、dice、loss曲线、训练日志等等】

    asp.net某公司员工管理系统的设计与实现(源代码+论文)【ASP】.zip

    asp.net某公司员工管理系统的设计与实现(源代码+论文)【ASP】

    grpcio-1.16.0-cp36-cp36m-macosx_10_7_intel.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    grpcio-1.20.0-cp34-cp34m-manylinux1_i686.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    基于Java的个人理财管理系统(源码+论文+需求分析+数据库文件+演示视频).zip

    随着社会的发展,人们的生活水平的不断提高,人们在理财投资方面,已经有着很高的认识度了。人们的管理生活已经离不开网络。未来社会人们的生活和管理将越来越依赖于数字技术的发展,越来越数字化、网络化、电子化、虚拟化。Internet的发展历程以及目前的应用状况和发展趋势,可以充分地相信网络技术将极大的改变我们的生活和工作方式,甚至社会的价值观也会发生某种变化。 本设计尝试用JSP在网络上架构一个投资理财管理系统,本文从理论和实践两个角度出发,对一个具有数据挖掘功能投资理财管理系统进行设计与实现分析。论文首先较为详尽地介绍了管理课程的有关概念与知识,特别介绍了相关延伸表现形式,本统系统是运用JSP技术来实现的。其主要功能有:系统用户管理,收入记录, 支出记录,财产查询,还贷助手,储蓄提醒等。论文在撰写过程中,力求将理论与实践应用相结合,对各种理论进行阐述的同时配合系统从实际应用和操作技巧上加以说明,希望能够更充分地体现到这些知识与技术在本系统中的应用与实现。

    毕设新项目-基于图像处理的喷码缺陷检测python源码+详细项目说明+模型+数据集.zip

    毕设新项目-基于图像处理的喷码缺陷检测python源码+详细项目说明+模型+数据集.zip 【项目介绍】 瑕疵 在喷码位置确定一视野范围,以正常喷码样品视野内黑色面积为标准 * 漏喷 黑色覆盖面积小于正常喷码 * 喷码偏移 喷码超视野范围,视野内覆盖面积达不到标准要求 * 喷码模糊 * 字符缺失 采用OCR(光学字符识别技术)对喷码内容进行提取,和预定字符进行对比 * 打花 基于目标检测方案(找到每一个字符的位置及其所属类别,然后判断字符是否存在缺陷) (1)两阶段算法——基于候选区域 R-CNN,Faster R-CNN,先利用某些候选区域方法产生目标候选框,再判断候选框是否包含要检测的目标(检测效果好,尤其在小目标检测方面,但是速度相比一阶算法慢很多) 更多见项目说明!!! 【优质项目推荐】 1.项目代码功能经验证ok,确保稳定可靠运行。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通,帮助解答。 2.项目主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。

    在准备618节日相关的IT资源的建议

    在准备618节日相关的IT资源的建议

    ASP+ACCESS订单管理系统设计(论文+源代码+任务书)【ASP】.zip

    ASP+ACCESS订单管理系统设计(论文+源代码+任务书)【ASP】

    asp+ACCESS酒店房间预约系统设计(源代码+论文)【ASP】.zip

    asp+ACCESS酒店房间预约系统设计(源代码+论文)【ASP】

    ASP.NET某店积分更新记录管理(源代码+论文)【ASP】.zip

    ASP.NET某店积分更新记录管理(源代码+论文)【ASP】

    静态链接器 vs. 动态链接器:选择合适的链接方式"

    链接器 二、链接器主要任务: GNU ld(链接器)是用于将多个目标文件(包括目标文件、共享库、目标文件的归档文件等)合并成一个可执行文件或共享库的重要工具。它的主要功能包括:符号解析和重定位:链接器识别并解析输入文件中的符号引用,然后执行重定位操作以确保这些引用指向正确的地址。这包括将模块中的符号引用与其定义进行匹配,以便在合并时连接它们。 合并输入文件:链接器将多个输入文件中的代码段、数据段等模块合并成一个单一的地址空间。这包括将不同模块中的代码和数据安排到正确的内存地址中。 生成输出文件:链接器将合并的模块和符号表等信息写入输出文件中,该输出文件可以是可执行文件、共享库、目标文件等,具体类型取决于链接器的参数和配置。 符号表处理:链接器生成输出文件的符号表,其中包含了可供调试和动态链接器使用的符号信息。 处理重定位信息:如果存在重定位信息,链接器将生成重定位表,用于在加载时修正代码和数据的地址。这使得程序可以在不同的内存地址上运行。 处理链接器脚本:链接器可以根据链接器脚本(linker script)中的规则和指令来组织和排列模块,以满足特定需求。链接器脚本可以

    操作系统实验三银行家算法.docx

    操作系统实验三银行家算法

    基于ASP网络办公OA系统设计(论文+源代码+开题报告+答辩PPT)【ASP】.zip

    基于ASP网络办公OA系统设计(论文+源代码+开题报告+答辩PPT)【ASP】

    基于Java的工会会员管理系统(源码+论文+需求分析+数据库文件+演示视频).zip

    计算机对工会会员信息进行管理,具有人工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性强、存储量大、保密性能好等。这些优点能够极大地提高工会会员管理的工作质量和效率,也是工会管理的科学化、规范化、信息化管理的重要条件。另外随着计算机网络的持续发展,无论是工作、学习还是生活,将会越来越多地融入到流动的比特中,人们的工作节奏在不断加快,需要快捷的信息来源,并对此做出快速反应。 ; 二级工会会员管理系统 开发环境:MyEclipse,SQL Server 2005数据库,Tomcat6.0,Struts2+Spring+Hibernate技术整合。 实现的功能模块: 登录模块 部门信息管理模块 会员信息管理模块 报表信息管理模块 登录 注册 查看详细信息 修改 删除信息

    基于python的模板数字识别程序

    基于python的模板数字识别程序

    cryptography-37.0.0-cp36-abi3-win32.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    密码学之AES加密算法代码

    AES加解密实现代码

Global site tag (gtag.js) - Google Analytics