TranslateProject/published/201912/20191204 Java vs. Python- Which should you choose.md
Xingyu Wang a6d3519379 归档 201912
2019 年过去了
2019-12-31 20:44:47 +08:00

131 lines
4.9 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[#]: collector: (lujun9972)
[#]: translator: (geekpi)
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-11679-1.html)
[#]: subject: (Java vs. Python: Which should you choose?)
[#]: via: (https://opensource.com/article/19/12/java-vs-python)
[#]: author: (Archit Modi https://opensource.com/users/architmodi)
Java 与 Python你应该选择哪个
======
> 比较世界上最流行的两种编程语言,并在投票中让我们知道你喜欢哪一个。
![](https://img.linux.net.cn/data/attachment/album/201912/16/095025dppnl2lgtykgggkt.jpg)
让我们比较一下世界上两种最受欢迎、最强大的编程语言Java 和 Python这两种语言有巨大的社区支持和库来执行几乎任何编程任务尽管选择编程语言通常取决于开发人员的场景。在比较和对比之后请投票分享你的观点。
### 是什么?
* **Java** 是一门通用面向对象的编程语言,主要用于开发从移动端到 Web 到企业级应用的各种应用。
* **Python** 是一门高级面向对象的编程语言,主要用于 Web 开发、人工智能、机器学习、自动化和其他数据科学应用。
### 创建者
* **Java** 是由 James GoslingSun Microsystems创造的。
* **Python** 是由 Guido van Rossum 创造的。
### 开源状态
* **Java** 是免费的,(大部分)开源,但商业用途除外。
* **Python** 对于所有场景都是免费、开源的。
### 平台依赖
* **Java** 根据它的 WORA (“<ruby>一次编写,到处运行<rt>write once, run anywhere</rt></ruby>”)哲学,它是平台无关的。
* **Python** 依赖于平台。
### 编译或解释
* **Java** 是一门编译语言。Java 程序在编译时转换为字节码,而不是运行时。
* **Python** 是一门解释性语言。Python 程序在运行时进行解释。
### 文件创建
* **Java**:编译后生成 `<filename>.class` 文件。
* **Python**:在运行期,创建 `<filename>.pyc` 文件。
### 错误类型
* **Java** 有 2 种错误类型:编译和运行时错误。
* **Python** 有 1 种错误类型:回溯(或运行时)错误。
### 静态或动态类型
* **Java** 是静态类型。当初始化变量时,需要在程序中指定变量的类型,因为类型检查是在编译时完成的。
* **Python** 是动态类型。变量不需要在初始化时指定类型,因为类型检查是在运行时完成的。
### 语法
* **Java**:每个语句都需要以分号(`;` )结尾,并且代码块由大括号( `{}` )分隔。
* **Python**:代码块通过缩进分隔(用户可以选择要使用的空格数,但在整个块中应保持一致)。
### 类的数量
* **Java**:在 Java 中的单个文件中只能存在一个公有顶级类。
* **Python**Python 中的单个文件中可以存在任意数量的类。
### 代码多少?
* **Java** 通常比 Python 要写更多代码行。
* **Python**通常比 Java 要写更少代码行。
### 多重继承
* **Java** 不支持多重继承(从两个或多个基类继承)。
* **Python** 支持多重继承,但由于继承复杂性、层次结构、依赖等各种问题,它很少实现。
### 多线程
* **Java** 多线程可以支持同时运行的两个或多个并发线程。
* **Python** 使用全局解释器锁 GIL一次只允许运行单个线程一个 CPU 核)。
### 执行速度
* **Java** 的执行时间通常比 Python 快。
* **Python** 的执行时间通常比 Java 慢。
### Hello world
Java 的:
```
public class Hello {
   public static void main([String][3][] args) {
      [System][4].out.println("Hello Opensource.com from Java!");
   }
}
```
Python 的:
```
print("Hello Opensource.com from Java!")
```
### 运行程序
![Java vs. Python][5]
要运行 java 程序 `Hello.java`,你需要先编译它,这将创建一个 `Hello.class` 文件。只需运行类名 `java Hello`。对于 Python只需运行文件 `python3 helloworld.py`
--------------------------------------------------------------------------------
via: https://opensource.com/article/19/12/java-vs-python
作者:[Archit Modi][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/architmodi
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/code_development_programming.png?itok=M_QDcgz5 (Developing code.)
[2]: tmp.Bpi8QYfp8j#poll
[3]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string
[4]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+system
[5]: https://opensource.com/sites/default/files/uploads/python-java-hello-world_0.png (Java vs. Python)