千锋教育-做有情怀、有良心、有品质的IT职业教育机构

你所在的位置:首页 > 常见问题

Java与Python谁胜一筹?

时间:2017-12-27 16:57:51 来源:千锋教育  作者:千锋

   Python起源于一种脚本语言,它的语法体现了一种可读性的理念,具有简单而规则的界限,鼓励简洁和一致的代码布局。Python的动态类型有助于代码简化和组合,是许多平台的解释性语言,成为众多程序员编程选择的便携式选项。

  Python的参考实现(以C编写,被称为CPython)在许多平台上可用,并且是众多实现中常用的。其他实现例如IronPython,是使用C#编写的,并提供与.NET运行时的紧密集成。

  Python是围绕可扩展对象模型构建的通用语言。其面向对象的核心并不意味着对象定向是开发人员在用Python编程时常用的方式。它支持程序化编程,模块化编程和部分函数式编程。

  Java是一种面向对象语言,具有许多程序员熟悉的类似于C / C ++的语法。其吸引力和价值所在是其具有的可移植性和相对效率。Java作为一种编译语言,执行模式与解释性语言(比如Python和Perl)相比加以机器为中心。Java不仅仅是一种语言和库:它也是一个虚拟机,一个生态系统。Java虚拟机(JVM)是运行Java代码的理想化和便携式平台。程序员不必担心硬件细节,并且不必将代码移植到新平台,Java承诺“一次写入,到处编译(WORA)”。同时,JVM语言有很多,比如Groovy、Clojure、Scala、Python或者Jython。

  那么这两种语言相比,哪一种胜一筹呢?

  1、速度

  虽然软件中的性能并不总是一个问题,但它始终是一个考量因素。在网络I / O成本或数据库访问占地位的情况下,语言的具体效率不如技术选择和设计方面的整体效率重要。

  Java和Python都不适合高性能计算,但在性能上,Java还是略胜一筹。虽然一些Python实现(如PyPy)可以针对性能进行微调,但原始的便携式性能Python不占优势。

  Java的效率优势体现在虚拟机执行。程序执行时,JVM可以将字节码转换为本地机器码。这种即时(JIT)编译让Java的性能略胜Python。依靠JIT是一个相当便携的假设,HotSpot是默认的Oracle JVM。

  Java从其个公开版本起就支持并发,而Python则是按序执行。在当前多核处理的趋势下,Java代码易实现。

  这一轮,Java胜!

  2、历史遗留问题

  历史遗留问题在其技术上具有惯性。当企业选择了一种编程语言,就很难再次换。例如,多的企业项目后端可能会使用Java代码来扩展其功能,也许可以迁移到新版本的语言,或者通过其他JVM语言(如Scala和Groovy)添加新功能。Java在企业中的历史比Python久,这也是招聘Java程序员的企业比招Python多的原因。

  这一轮,Java胜!

  3、实用敏捷性

  漫长的发展中,Java和Python都受益匪浅。Java通常被认为与敏捷开发及其社区有密切的联系。Python在敏捷领域一直存在,并且受到诸多原因的影响而加普及,包括DevOps运动的兴起。

  Java比Python具备一致的重构支持,一方面,它的静态类型使自动化重构可预测和可靠,另一方面是Java开发中IDE(例如IntelliJ,Eclipse和NetBeans)的普及。Python的动态类型在代码中鼓励使用不同类型的敏捷性,其重点在于简洁和流动。然而,Pythonic文化倾向于多种编辑器,而不是基于IDE,这意味着对强自动重构的支持较低。

  JUnit的早期度及其与测试驱动开发(TDD)的关联意味着,在所有语言中,Java可能是唯一一个单元测试受到程序员一致欢迎的语言。在IDE中自动包含JUnit已经在很大程度上对此有所帮助了。

  Python的脚本起源和在其标准库中包含测试功能意味着Python对现代开发中自动化测试相当重视,尽管它有可能是集成而不是单元测试。在Java世界中,传统Java代码库可以通过采用另一种JVM语言来加以改善,例如使用Groovy或Clojure进行自动化测试,或者完全跨越Java Universe,例如使用Python来处理系统方面操作 。

  这一轮,平局!

  4、市场普及度

  Java和Python都是TIOBE编程语言排行榜上的前十名,并且是稳稳地占据前十名。 但Java一直比Python受欢迎,但是Python的受欢迎程度已经超过了两种编程语言:Perl和Ruby。

  此外,两种语言在教育中都具有强大的立足点,但Java比Python常用于大学课程中。

  这一轮,Java胜!

  5、架构

  围绕Python Web框架构思的软件体系架构与Java的不会相差甚远。Java和Python都有各自的开源社区,并有很多程序员一直在源源不断的贡献源代码,这些代码已经解决了常见或者不常见的问题,事实上,这两种语言都因开源社区而受益匪浅。

热帖推荐

  • 成都地址:成都市武侯区科华北路62号力宝大厦N(北楼)18楼
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训
  • 北京天丰利校区:北京市海淀区宝盛北里西区28号天丰利商城4层
    北京沙河校区:北京市昌平区沙阳路18号北京科技职业技术广场服务楼2层、南区服务楼2层
    咨询电话:400-654-7778 010-82790226-801
    面授课程:iOS培训、Android培训、HTML5培训、UI培训、PHP培训、JavaEE培训、好程序员
  • 深圳科技园校区:深圳市南山区科苑南路高新技术产业园R3-B栋5层
    深圳大学城校区:深圳市南山区留仙大道1201号大学城创客小镇16栋2楼、3楼
    深圳西部硅谷校区:深圳市宝安区宝安大道5010号西部硅谷B座A605-619
    咨询电话:0755-86681178/9-801
    面授课程:iOS培训、Android培训、HTML5培训、UI培训、PHP培训、JavaEE培训、好程序员
  • 上海地址:上海市宝山区同济支路199号智慧七立方3号楼2-4层
    咨询电话:400-627-7899 021-65025129-602
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、好程序员
  • 郑州地址:郑州市金水区纬五路21号河南教育综合楼(经纬中学楼)6/7/8层
    咨询电话:0371-55911950 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训
  • 广州地址:广州市天河区元岗路310号智汇park创意园E座5层
    咨询电话:020-22119207 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 大连地址:大连市甘井子区软件园路2号B8座二楼
    咨询电话:0411-39026086 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 武汉地址:武汉市东新区光谷大道77号金融港B26栋9楼
    咨询电话:027-59905909 027-59905908 027-59905902
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 西安南二环校区:西安市二环南路西段60号永安大厦4层
    西安科技园校区:西安市雁塔区高新六路52号立人科技园C座西区4层
    咨询电话:029-85260160 029-85261030 029-85260960
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 杭州地址:浙江省杭州市江干区九堡旺田书画城A座4层
    咨询电话:0571-86893632 010-82790226-801
    面授课程:iOS课程培训、Android课程培训
  • 青岛校区地址:青岛市市南区金坛路17号青岛职业技术南校区实训楼A4层
    咨询电话:0532-80910752/3 010-82790226-801
    面授课程:iOS课程培训、Android课程培训
  • 扫码匿名提建议
    直达CEO信箱