最近,我最近将Java的录音环境与Python's进行了比较。
许多批评者认为这种苹果对苹果的比较是不公平的。
Python社区的一般共识是为了进行更公平,更平衡的比较:Pit于2023年与1998年的Java Applet编写的现代Python应用程序,或为JDK的首次发布而写的独立Java应用程序。
我很乐意将Java小程序与Python基于浏览器的任何功能进行比较。
苹果与小程序比较
20年来,Java Applet使在浏览器中运行Java代码成为可能。 Python从来没有任何类似的功能,因此将其标记为Java获胜。
但是,通过开发具有单个入口点的独立应用程序来比较Java与Python进行比较。这就是我在这里解决的问题。
java中的helloworld应用程序
为了编写使用Java 21的未命名类和实例主要方法功能的现代独立Java应用程序,完整代码如下:
void main(){系统。 OUT .print(“ Hello World”);}
企业级爪哇
Java的主要方法语法不仅优雅且熟悉,而且还足够灵活,可以支持无数的企业用例。这包括需要将命令行参数传递给程序,这是一个共同的要求。
为此,Java程序的主要方法简单地引用了一个字符串。
void main(String args []){系统。 out .print(args.length);};}
Java主要方法的优势
Java中主要方法的语法和语义提供了各种重要好处:
明确清楚执行的线程将在哪里开始。
该语法对任何熟悉基于C语言的开发人员都很友好。
Java的主要方法可确保未在导入时执行任何无人看管的代码。
命令行参数可以在运行时轻松传递到Java程序。
该构造简单,优雅且容易让新开发人员理解。
那么Python如何实现相同的功能?不能。但是它尝试。

Java 21引入了一种新的,简洁的主方法作为预览功能。
python中的helloworld应用程序
为了尝试达到与Java的主要方法相同的功能,Python使用臭名昭著的语法:“如果强调下划线强调名称强调强调,则表现出色。这就是外观:
导入sysif __name __ ==“ __ -main __”:sys.stdout.write('Hello world')
为了打印传递到Python程序的参数数量,如上面的Java程序,这是代码:
导入sysif __name__ =='__ -main __':sys.stdout.write(str(len(sys.argv))))
请注意,第一个python示例使用__-main __周围的双引号,而第二个则使用单引号。
这种编码不一致在Python代码库中无处不在。它实际上被认为是该语言的功能。

Python需要深奥的样板代码来隔离入口点代码。
Python的辅助功能
上面的示例使用核心Python API。
为了隐藏新用户的语言的复杂性和冗长,Python为开发人员提供了一个内置功能的Potemkin村庄,以帮助入职。这些功能之一是命名打印。
我们可以重写上面的代码以使用Python的立面API,如下所示:
导入sysif __name __ ==“ __ -main __”:print((len(sys.argv),end ='')
Java和Python比较
将Java语法与Python进行比较,以便使用具有明确定义的入口点的独立应用程序的用例进行比较,而这些是收获:
Java的详细信息较少。
Python更加隐秘。
Java更具功能。
Python语法不一致。
Java不需要立面功能。
Java的PSVMSA输入方法
Python开发人员可能会指出,在Java 21之前,撰写Java应用程序的详细信息明显更大。这是真的。
Java的PSVMSA语法 - P ublic s Tatic v oid m ain s traing rgs - 一直是嘲笑的根源。
从历史上看,人们会写一个独立的Java程序,如下所示:
公共类Helloworld {public static void main(string [] args){系统。 Out .print(“ Hello World”); }}}
PSVMSA语法绝不是像Python的名字那样神秘而深奥的,但Python并不是Java Language Architects所拥有的高级杆。
Java一直具有很高的标准,以简单性和易用性。
许多批评家认为PSVMSA构造是Java语言不足的一个实例。这就是为什么语言架构师对其进行了更改的原因。
Python的基本缺陷之一
但是,Java的传统语法将主要方法包装在Java类中,实际上具有更高的目的。该语法阻止执行类外部定义的任何代码。它将不允许无人看守的代码在不知不觉中执行并渗透您的服务器。
Python语言中最严重的缺陷之一是,即使开发人员将代码放置在名称中等于代码的主要块,也没有什么可以阻止执行文件中的其他代码。
这意味着任何不道德的开发人员都可以在python文件中编写顶级代码,并且该代码将在导入组件后立即自动执行。
我将重复一遍:python文件中的方法之外编写的代码可以在导入时执行。
不需要调用该文件,也不需要为创建的组件的实例。只需通过导入语句链接到该文件,这足以解散不满的员工可能隐藏在内部的木马,脚本孩子和病毒。
Python无保护的代码的危险
Python社区承认这一险恶的无保护的代码安全缺陷,但是没有标准的方法来保护系统免受该系统的影响,只是简单地相信世界上的每个开发人员都会诚实和善良。
相比之下,Java类从未有可能运行无保护的代码。
安全性和弹性一直是Java语言架构师的重中之重,该语言的语法反映了这一点。
Java与Python分析
一些Python支持者抱怨说,对Java的脚本功能与Python的脚本功能的诚实比较对蛇是不公平的。他们认为,比较用两种语言编写的独立应用程序,以使Python更好的机会参加比赛。
最后,在这种情况下,两种语言对两种语言进行了公正的面对面的比较表明:
Java的详细性不如Python。
Java语法对经验丰富的开发人员更加熟悉。
Java不如Python隐秘。
Java比Python更安全。
最重要的是,Python无法实现实际目标:定义一个具有单个,定义明确的入口点的程序。
Python根本无法做到这一点,因为神秘名称的存在等于MAIM构造实际上并不能禁止其他顶级代码运行。
Java与Python比较的其他轴
当然,语言支持录音或解决独立应用程序的开发的方式只是判断语言的二维。
还有许多其他重要轴可以比较编程语言。在以后的文章中,我将做到这一点,因为我们将Java与Python进行了几个因素:
跨核的多线程支持。
向后兼容的历史。
运行时性能和能源使用。
基于社区的独裁管理。
公共操作员支持(++和开关语句)。
只有考虑到整体编程语言,我们才能正确,公平地评估其对企业发展的适用性。