说实话,这个问题真的不好回答,容易引战!
当然,以下言论仅代表偶个人观点,不喜勿喷,为了祖国和谐,人民安康,请各位看官尽量理性讨论!
对于Java和Python到底那个更好,这个问题,站在不同的角度,自然就会诞生出不同的答案,如果一个不懂几门编程语言的人,或者很少使用到Java或者Python的人,一上来就告诉你Java好还是Python好,这是赤裸裸的不负责任。
如果这个人用Python开发,并且混得还不错,他一定会告诉你Python是世界上最好的语言,没有之一,Java都是垃圾,都是落伍了的。
当然,如果这个人用的是Java,而很少用python,那他一定会告诉你用Java比python好。
但,如果这个人是两个语言都没有用过的键盘侠,他一定会告诉你语言都是相通的,不用纠结。
似乎,每一个人都说得好有道理的样子,于是让你无从选择,而且还陷入了更深层次的纠结中!
今天,偶站在一个客观的立场上,替你分析一波。
首先,在选择之前,大家第一个要弄清楚的就是Java和Python的区别。
一、从语言本身的层面来看
最本质区别就是一个是脚本可以解释执行,一个是需要编译通过才能执行。相同点就是,它们都会通过一个中间语言来执行,而且都会优化。不过java的优化强大,效率高。另外python的面向对象与java的不完全一样。python更表面化,java的严格多了。编程风格也有本质区别。python喜欢随意,喜欢用小写,喜欢用缩略语的变量。这些在java中都是违反规范的。python是C语言库支持的。更接近函数式编程。同时与操作系统底层也通过C,直接打交道。java这方面就弱多了。语法方面python不需要声明就可以使用变量。但是要求对齐要很整齐。java不要求整齐,但是变量一定要声明定义后才能用。python中大量使用类似指针的用法,很灵活。而java这方面基本上用面向对象,以及类的操作代替。python是全动态性的,可以在运行时自己修改自己的代码,java只能通过变通方法实现。python的变量是动态的,而java的变量是静态的,需要事先声明,所以java ide的代码提示功能优于python ide。python的产生几十年了,几十年前面向过程是主流,所以用python有好多程序用的是面向过程设计方法,很多概念从c语言过来的,class在python中是后加入的,而java是为了实现没有指针的c++(当年com组件用的引用记数,java用的虚拟机),主要采用面向对象的设计方法,很多概念是oop的概念。面向过程,相对简洁直观,但容易设计出面条程序,面向对象,相对抽象优雅,但容易过度抽象。
二,从生态环境的层面来看
1、在实际使用的python入门简单,但要学会用python干活,需要再学习python各种库,pyhton的强大在于库,为什么python的库强大,原因是python的库可以用python,c语言,c++等设计,再提供给python使用,所以无论gpu运行,神经网络,智能算法,数据分析,图像处理,科学计算,各式各样的库在等着你用。而java没有python那么多的开源库,很多库是商业公司内部使用,或发布出来只是一个jar包,看不到原始代码。python虚拟机因为编译性没有java的支持的好(或者说故意这么设计的),一般直接使用源码(linux),或源码简单打个包(如pyexe)。2、python有很多虚拟机实现,如cython,Pyston,pypy,jython, IronPython等等,适合用于业务语言,或插件语言,或面向领域语言,而java因为虚拟机巨大,很少用于插件语言,发布也不方便。3、java主要用于商业逻辑强的领域,如商城系统,erp,oa,金融,保险等传统数据库事务领域,通过类似ssh框架事务代码,对商业数据库,如oralce,db2,sql server等支持较好,软件工程理念较强,适合软件工程式的多人开发模式。python主要用于web数据分析,科学计算,金融分析,信号分析,图像算法,数学计算,统计分析,算法建模,服务器运维,自动化操作,快速开发理念强,适合快速开发团队或个人敏捷模式。4、java的商业化公司支持多,如sap,oracle,ibm等,有商业化的容器,中间件,企业框架ejb。python的开源组织支持多,如qt,linux,google,很多开源程序都支持python, 如pyqt,redis,spark等。5、python用途最多的是脚本,java用途最多的是web,pyhotn是胶水,可以把各类不相关的东西粘在一起用,java是基佬,可以通过软件工程组成几百个人的团队和你pk,商业化气息重。不过偶认为还是python强大,因为可以方便调用c或c++的库,但软件工程和商业化运作没有java好,适合快捷开发。6,关于钱。如果你想写程序卖软件用java,可用上ibm服务器,上oracle数据库,上EMC存储,价格高,商业采购公司喜欢这种高大上。如果你要直接用程序生成金钱用python,python可以实现宽客金融,数据回测,对冲套利,统计套利,有很多开源库,数据分析库,机器学习库可以参考。7、java和python,都可以运行于linux操作系统,但很多linux可以原生支持python,java需要自行安装。java和python强于c#的原因大于支持linux,支持osx,支持unix,支持arm。java和python比c++受欢迎的原因在于不需要指针。8、对于移动互联网,python只能通过运行库运行于安卓或ios,java原生支持安卓开发,但不能用ios中。9、对于大数据,hadoop用java开的, spark用Scala开发,用python调用spark再分析更方便。10、java更适合做网站,做分布式计算。所以科学上,网络上用得多。11、python覆盖面广。从教育,科研,运维管理,到一般的网站全都有。主要侧重在运维管理方面。本来它创建时就为了管理用的。java当时创建就是为了跨平台的移植,为了嵌入系统。事实上嵌入系统方面,java不成功。
三,从发展前景的层面来看
Java的发展方向:web开发、大数据开发、安卓开发、服务器开发等等。
Python的发展方向:数据分析、人工智能、web开发、测试、运维、web安全等等。
当然,从两者的区别来看,似乎也是很难选择!
毕竟,Java与Python目前都是非常流行的全场景编程语言,在很多开发场景下,既可以使用Java语言,也可以采用Python语言。
而且,随着近几年大数据和人工智能领域的热度越来越高,Python语言的上升趋势正在逐渐提高,而python语言本事,也获得了越来越多的关注。
但,就总体而言,Java语言还是有很多固有优势的,主要体现在以下三个方面:
第一:性能。Python语言有很多优势,比如简单易用、扩展性强等等,但是在性能方面与Java相比还是存在一定的差距,这一点不论是在Web开发,还是在大数据开发领域,都有一定的体现,这也是为什么很多比较注重性能的平台,更愿意采用Java语言的重要原因。第二:生态体系。Python语言和Java语言的生态体系都比较健全,但是二者之间的发展路线还是存在一定区别的,Python更注重“库”的搭建,而Java则更注重“平台”的搭建,从这个角度来看,Python更注重问题的解决,而Java更注重如何通过技术来构建生态。从语言的角度来进行延伸,Java程序员更擅长做“轮子”,所以这个过程可能会不可避免地出现重复,而Python程序员则能够在很大程度上避免这一问题。第三:安全性。安全性也是Java比较优势的领域,当前部分大型安全服务商,尤其是关注于企业安全服务领域的科技公司,也把解决方案从Python调整回Java路线上,这在一定程度上能够说明Java语言在安全方面的优势。
如果单纯从事实出发,Python的学习,要相对简单一点,而Python之所以简单,是因为大家使用Python时,可以直接调用别人给大家写好的代码接口,而Java的很多处理相对要原生一点,大家写的代码要稍微多一点。
这就类似于中国人吃饭时喜欢使用筷子,而外国人吃饭时喜欢使用刀叉,如果你会使用筷子,那你使用起刀叉来就会毫无障碍,但如果你仅仅只会使用刀叉,而想要直接使用筷子,就要相对困难一些。
所以,不要再纠结了。
如果你把Java作为你的人生的第一门用心学习的语言,那么你只需要花极短的时间,就可以基本学会C++,JavaScript,PHP, Python,R,C#,Objective-C,Swift,Go等一些列语言。
此回答来自乐字节
最后介绍几个可以自学 的地方给大家(哔哩哔哩自学)SpringBoot+Vue前后端分离项目实战:BV1Tq4y1E7i5MySQL数据库: BV1tK4y197JCeval python,python shell 区别,python 格式化打印,新手python心得,python微信聊天21,python 心动,hihocoder python,列表提取python,python task对象,python易学堂,python dict haskeyeval python,python shell 区别,python 格式化打印,新手python心得,python微信聊天21,python 心动,hihocoder python,列表提取python,python task对象,python易学堂,python dict haskeyeval python,python shell 区别,python 格式化打印,新手python心得,python微信聊天21,python 心动,hihocoder python,列表提取python,python task对象,python易学堂,python dict haskey