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

108 天前
 drymonfidelia
突然被刚学编程的人问这个问题,发现我也解释不清楚
4573 次点击
所在节点    程序员
35 条回复
tyzandhr
108 天前
因为谷歌选择了 jvm 平台而已。
Belmode
108 天前
因为 Android 上没有对应的 php 运行时和 php 基础库的支持。
你要愿意,可以用 android 的 so 库实现 php 运行时,开发一个能跑 php 的 app ,在 app 内借助 java Bridge ,来渲染 activity ,来套娃开发页面,也是可以的。

类似 autojs 的独立 Ui 模式,它就是用的 js Bridge 。

本质上可以,但是没有意义,花活而已。
pi7m1Dr691wfl95q
108 天前
小型系统才是 java 的本家好吧。
Wiki 一下就有了:
Java 是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级 Web 应用开发和移动应用开发。

任职于 Sun 微系统的詹姆斯·高斯林等人于 1990 年代初开发 Java 语言的雏形,最初被命名为 Oak ,目标设置在家用电器等小型系统的编程语言,应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun 微系统放弃了该项计划。随着 1990 年代互联网的发展,Sun 微系统看见 Oak 在互联网上应用的前景,于是改造了 Oak ,于 1995 年 5 月以 Java 的名称正式发布。Java 伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
msg7086
108 天前
songpengf117
108 天前
所谓的后端语言指的是 web 开发框架中后端 API 的开发语言,开发 Android 客户端的 Java 不再是后端语言,此时的 Java 更多的时候指的是前端 UI 开发
iminto
108 天前
因为 PHP 社区太差,成天吹牛逼,互相吹捧。看国内这一帮什么某哥,某神,什么开发者大会上一顿输出就知道了。

10 年前,安卓 2.3 年代倒是真有个 php4android 项目,昙花一现。
skuuhui
108 天前
可以啊,为啥不可以,java 也不是直接运行呀,你自己实现一个把 php 编译成 class 字节码就行了。
yKXSkKoR8I1RcxaS
108 天前
B/S 语言和 C/S 语言各有各的领域,PHP 就是为了 B/S 而生,为什么要拿去搞 C/S?
yKXSkKoR8I1RcxaS
108 天前
可以搞,但没必要。在 C/S 领域太多优秀的语言了,PHP 还是老老实实在 B/S 深耕比较好,不然又要招惹很多骂名,说 PHP 不自量力吹牛逼。
sagaxu
108 天前
告诉他,技术上的选择甚至人生选择,并不是简单的能不能的问题
error451
108 天前
缺乏完整成熟的解决方案。

PHP 的定位的就是处理 http 的,官网的标题就是:PHP:Hypertext Preprocessor

所以 PHP 围绕 web 相关的成熟解决方案非常多, 但是适合于嵌入式开发的解决方案几乎没有。

当然,理论上 PHP 也可以做嵌入式开发, 但是这种话毫无意义,因为需要有大量的工作去做,没有人会这么自虐。

这就好比,理论上单纯用 0/1 可以编写出世界上任何一个程序, 但是谁脑子坏了会去这么干??
woodfizky
108 天前
你把语言理解成铁路轨距标准、车厢标准等,每种语言都有不同的特性,适用于不同的场景。

第一,没有最好的标准,只有最适合的;
第二,铺轨道是要代价的,很大的代价;
第三,基于第二点,谁先去铺了轨道,后面的人大概率是不会去改它的,而是反过来去适应它。

谷歌已经花代价把轨道铺好了,那你想再用另一个轨距标准在同一片土地上铺不同的轨道嘛?
除非你的轨道标准提升的生产力/效率能够降维打击前者,就像现在的高铁比普通铁路的优势,否则没必要新铺。
ala2008
108 天前
php 有啥优势先,java 开发者应该是最多的吧。。
coderzhangsan
108 天前
楼上都已经说的很清楚了,php 自诞生之日起,就是锚定 web 市场的,你现在让它做除了 web 之外的事,太难为她了,就比如现在有的 php 开发者搞的那些框架和库,要做 tcp/udp 服务器,物联网什么的,我都不知道他们脑子里装的是什么,暂且不说市面上有那么多合适和成熟的语言可以做这些事,一个动态脚本语言做这些事有什么意义呢!

现在有些人的思维是一门语言承担所有业务,那还要其他语言干什么呢?合适的时间用合适的工具做合适的事,做对的事比把事情做对更重要。
meshell
108 天前
看下这个吧,https://nativephp.com/
shadowyue
108 天前
语言还分后端、客户端吗?我觉得只是看对应平台支不支持罢了
sujin190
108 天前
没啥不可以,只不过没现成的 Android GUI 适配基础库呗,你可以去做下适配那不就可以写了,Android 的窗口管理、绘图和消息事件都可以越过 java 写的 framework 直接调 native 库,写个 php c 扩展适配下就可以写 Android 客户端了啊,所以不存在不可以的情况吧,只不过好像用处不大,毕竟越过 framework 毕竟不方便而且 php 也没这生态啊
meshell
108 天前
@meshell 虽然也是多种工具的组合。
qcbf111
108 天前
没人做而已,任何语言都可以支持,其实不仅仅是 java ,就算彻底脱离 java ,也有像 flutter 现在有很多 APP 了,c#也有王者荣耀原神这些游戏,通过自己调用图形 api 的方式自己渲染来开发 Android 。
lisxour
108 天前
不是不可以,而是没人搞

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

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

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

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

© 2021 V2EX