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

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

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

很明显,职能分的太细了!真正的全栈已经越来越少了。
resetsix
56 天前
主要有以下原因
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
56 天前
因为之前从 Nokia 功能机时代以来,java 一直是手机端的开发语言。这样转换对程序员来说比较容易?我猜的。要知道安卓起步阶段市场上也有其他操作系统比如 win 、S60 之类的。
cnzjl
55 天前
整一个 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