为什么同样是后端语言, Java 可以用来开发 Android(客户端), PHP 就不可以用来开发客户端?

2024-07-24 03:00:33 +08:00
 drymonfidelia
突然被刚学编程的人问这个问题,发现我也解释不清楚
5208 次点击
所在节点    程序员
35 条回复
fkdtz
2024-07-24 09:57:35 +08:00
本质上来说无论用什么语言编写的程序,最终都可以编译成二进制可执行文件并在设备上运行,我认为从技术上来讲并不存在只有哪个语言可以做,哪个语言不可以做的情况。
之所以选择用 Java 开发 Android 是因为 Java 在端上运行有一些其他语言不具备的优势,最主要的就是有 JVM 的存在,Java 以“一次编写到处运行”而著称,这个特性在小型终端场景的优势尤其明显,可以让应用层开发可以尽量少的关注底层设备的差异,毕竟 Android 设备的型号架构可能千差万别,甚至于说最初 Android 是给数码相机开发的操作系统你敢信?
zjsxwc
2024-07-24 10:06:36 +08:00
php 没有多线程,早期安卓给的权限高,你客户端基于事件的 GUI 交互,php 就不合适。
现在权限收拢,js 也适合做安卓 GUI 客户端。

所有没多线程但有浏览器支持的 js ,更合适做 GUI 客户端,那么如果有浏览器支持、没多线程的 php 也能适合做 GUI 客户端,比如 PHP WASM,把 php 编译到 wasm ,然后浏览器里运行 php 脚本,于是 php 前后端代码也同构了。
me1onsoda
2024-07-24 10:11:05 +08:00
语言从来就没有限定它是后端还是前端。以前好多功能机小游戏开屏就是 Java logo
janus77
2024-07-24 10:24:20 +08:00
第一因为谷歌给他做了个定制的 JVM 虚拟机
第二,安卓原生的代码都是编译成字节码的,性能比 php 这种脚本语言高很多,还有成熟的和 C++交互的方案,这尤其对于图形界面等性能敏感场景非常重要
crocoBaby
2024-07-24 10:51:23 +08:00
理论上所有编程语言可以做所有开发,但是前提是有人用爱发电去做编译配套
brando
2024-07-24 10:55:19 +08:00
PHP 可以开发,但没优势,性能,成本等摆在那的。开发总要考虑经济成本的,后续可持续性等等,所以 PHP 一般适合 WEB 脚本。
815979670
2024-07-24 11:20:07 +08:00
我之前学 php 的时候老师举过一个例子,用 php 开发客户端软件就是用屎盆子吃饭,从原理上说是可以这样用的,但没有人会这样用
kid1412621
2024-07-24 13:05:56 +08:00
别说 GUI 了,CLI 都没怎么看到过
cexll
2024-07-24 13:13:52 +08:00
语言只是语法 就如同方言,得看有人底层开发了什么,有人用 c 写了客户端 只支持 java 那你就只能用 java 写,永远都是底层要求什么,然后你使用什么语言
mightybruce
2024-07-24 13:24:55 +08:00
因为 Android 的虚拟机 DVM(Dalvik VM) 让 java 成为了主要语言, 但是关键要求性能的开发已经不用 java, 都用 c++ 和 rust 来做,比如字节就招 rust 做安卓开发。
PHP 本身能做客户端,但是没有任何优势, 比 PHP 好点的 react-native 还不是很多人用来做客户端。
cheng6563
2024-07-24 13:50:38 +08:00
Java 一开始是可以在浏览器上跑的,并不是什么后端语言...
kalman03
2024-07-24 14:06:03 +08:00
什么是后端语言,什么是前端语言? JSP 算前端语言吗? Swing 呢?基于 Java Applet 运行的呢?

很明显,职能分的太细了!真正的全栈已经越来越少了。
resetsix
2024-07-25 00:44:23 +08:00
主要有以下原因
1. 语言设计目的:
- Java:最初设计为通用编程语言,可用于服务器端、桌面应用和嵌入式系统。
- PHP:主要设计用于服务器端 Web 开发。
2. 执行环境:
- Java:可以编译成字节码,在 Java 虚拟机( JVM )上运行。Android 使用一种特殊的 JVM 叫做 Dalvik/ART 。
- PHP:通常在服务器上解释执行,不直接在客户端设备上运行。
3. 移动平台支持:
- Java:Android 选择 Java 作为其主要开发语言,提供了完整的 Android SDK 。
- PHP:没有专门为移动平台设计的运行时环境。
4. 性能考虑:
- Java:编译后的字节码执行效率较高,适合资源受限的移动设备。
- PHP:作为解释型语言,在移动设备上可能会面临性能问题。
5. API 和库支持:
- Java:Android 提供了大量 Java API 来访问设备功能(如相机、传感器等)。
- PHP:缺乏访问移动设备硬件和系统功能的原生 API 。
6. 开发工具链:
- Java:有成熟的 IDE 和工具链支持 Android 开发(如 Android Studio )。
- PHP:开发工具主要针对 Web 开发,不适用于移动应用开发。
7. 编译 vs 解释:
- Java:可以预先编译,生成可直接在 Android 设备上运行的 APK 。
- PHP:通常需要服务器环境来解释执行,不适合打包成独立应用。
总结,Java 之所以可以用于 Android 开发,主要是因为 Android 平台的设计决策和 Java 语言的特性非常匹配,而 PHP 的设计初衷和特性更适合服务器端 Web 开发。收工
kokerkov
2024-07-25 08:00:35 +08:00
因为之前从 Nokia 功能机时代以来,java 一直是手机端的开发语言。这样转换对程序员来说比较容易?我猜的。要知道安卓起步阶段市场上也有其他操作系统比如 win 、S60 之类的。
cnzjl
2024-07-25 13:57:22 +08:00
整一个 pvm:php on Jvm !

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1059576

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX