3.面向对象

Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型。对象中封装了它的状态变量以及相应的方法,实现了模块化和信息隐藏;而类则提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用。

与Java相比,Python以一种非常强大又简单的方式实现面向对象编程。Python既支持面向过程的函数编程也支持面向对象的抽象编程。在面向过程的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在面向对象的语言中,程序是由数据和功能组合而成的对象构建起来的。

4.可扩展性

在这一点上,Python和Java都具有良好的可扩展性,两者在这一点上同样可以说一样也不一样。

Java的设计使它适合于一个不断发展的环境。在类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行。并且Java通过接口来支持多重继承,使之比严格的类继承具有更灵活的方式和扩展性。

Python的可扩展性不止于此,如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。

5.类库

只要是Java程序员,就没有不了解Java的类库的,Java之所以强大,并不是语法有多完善和强大,主要就是因为它有大量的类库。可以说在各类语言中,这一点上无出其右。其中中大量的规范,大量的库,只需要用基础的语法调用就能解决问题,所以项目上只要你使用的都是基础语法。

其实Python也是有自己的库的,而且标准库还很庞大。python有可定义的第三方库可以使用。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。只要安装了Python,所有这些功能都是可用的。这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等也不少。

6.可读性

Java和Python都可以说是很简单的语言,都有很好的可读性。当然这也有不同之处。

Java的简单是因为Java略去了运算符重载、多重继承等模糊的概念,并且通过实现自动垃圾收集大大简化了程序设计者的内存管理工作,所以学习起来相对要简单不少。

Python最大名气在于非常适合人类阅读。编程思维几乎完全和生活中的思维习惯一致。阅读一个良好的Python程序就感觉像是在读英语一样。同时虽然python虽然是用c语言写的,但是它摈弃了c中非常复杂的指针,简化了python的语法,同时Python采用强制缩进的方式使得代码具有极佳的可读性。所以不论是在阅读上还是在学习上,都非常简单容易,当然,这对英语的水平要求是比较高的。

7、执行

Java解释器直接对Java字节码进行解释执行。字节码本身携带了许多编译时信息,使得连接过程更加简单。和其他解释执行的语言如BASC、TCL不同,Java字节码的设计使之能很容易地直接转换成对应于特定CPU的机器码,从而得到较高的性能。

Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。因此不需要担心如何编译程序,如何确保连接转载正确的库等等,所有这一切使得使用Python更加简单。由于你只需要把你的Python程序拷贝到另外一台计算机上,它就可以工作了,这也使得Python程序更加易于移植。

8.应用领域

Java的应用领域主要是前端,web网页和安卓开发等。

Python的应用领域主要在游戏开发、搜索引擎、图形图像处理等处理。

看了两门语言的有点,下面再来看看,两门语言的缺点对比。


python语言的缺点

1、Python必须将程序写入一个.py文件。(对很多用户而言这也不算是限制)

2、运行速度,有速度要求的话,用C++改写关键部分吧。不过对于用户而言,机器上运行速度是可以忽略的。因为用户根本感觉不出来这种速度的差异。

3、python的开源性是的Python语言不能加密,但是目前国内市场纯粹靠编写软件卖给客户的越来越少,网站和移动应用不需要给客户源代码,所以这个问题就是问题了。国随着时间的推移,很多国内软件公司,尤其是游戏公司,也开始规模使用他。

4、构架选择太多(没有像C#这样的官方.net构架,也没有像ruby由于历史较短,构架开发的相对集中。Ruby on Rails 构架开发中小型web程序天下无敌)。不过这也从另一个侧面说明,python比较优秀,吸引的人才多,项目也多。

Java语言的缺点

1、代码量大,相对于C/C++、C#,同样的工作,Java的代码量是最大的。

2、受检查异常(Checked exception),受检查异常也已经成为Java的一个罪孽之源。它迫使程序员必须做下面两件看似多余的事情:让你的代码里充斥大量的、难读的、容易出错的try...catch语句,而这样做的最大意义,只是将捕获的异常,包装成运行时异常,然后再重新抛出;或者是让大量的抛出声明子句占用你的API,让接口缺少灵活性和可扩展性。

3、缺少闭包、一等函数等,导致Java无法真正的函数式编程,只能使用其内部类库。

很多朋友都说想学一门编程语言,但对于学什么语言还是心存疑惑,在我看来,这是很没有必要的,学什么语言是根据自己以后从事哪方面的工作相关联的,想做什么就学什么,而不是学什么做什么,这点很重要。