忍不住还是想向前辈们请教一下,公司以前是 PHP 不过新产品换成了 Java ,关于转型的问题

2017-07-20 08:52:44 +08:00
 DukeAnn

由于是换一家 PHP 公司,还是转学 Java,求老人给些建议。

8686 次点击
所在节点    程序员
55 条回复
onlyice
2017-07-20 18:33:31 +08:00
Java,就一句听烂了的 「 php 是全世界最好的语言」,让我觉得应该学 Java

正经地说,Java 适用面比 php 广,生态非常丰富,更值得投资
mgsparrow
2017-07-20 19:43:16 +08:00
@Lucups 同意这个说法,如果是我也会选择趁这个机会学习 Java,每学一个语言都对之前所学的知识有更深的理解呢
fox0001
2017-07-20 21:30:01 +08:00
一直在用 Java 混饭吃。以前头脑发热想学下 PHP,结果发现这东西反人类…
wdlth
2017-07-20 21:34:02 +08:00
上吧,让你体会到 JVM 的各种优势和坑。
TuringGunner
2017-07-20 21:43:15 +08:00
多好的机会,当然转了
lxml
2017-07-20 21:51:07 +08:00
@sagaxu #40 但 Go 还有俩优势,特别适合写工程化的代码(可以约等于写出容易理解的好代码,因为啥语法糖高级特性没有,写出来的风格非常近似,不像我之前 Python 出来牛鬼蛇神什么风格都有 ,PEP8 也镇不住),还有部署非常方便,打个包全家桶装走了这个我觉得还是挺吸引人的,写过一段时间 Java,深受语法啰嗦之害,但没写过 Java 后端代码,不好妄下定论,不清楚这两个能不能算作相比之下的优势?

当然,大家吹 Go 很重要的一个原因是因为它爹好,跟语言本身无关。
akira
2017-07-20 22:00:02 +08:00
有人出钱让你多点一个技能点,不赶紧抓住还在犹豫什么。
现在早就不是一个语言打遍天下的时代了
sagaxu
2017-07-20 22:13:51 +08:00
@lxml 最工程化的语言不是 Java 7 么?语法糖和高级特性完全空白。maven/gradle 工具链完备齐全,junit 和 PMD 以及 jenkins 等一大把 CI 工具,大部分特性都有相应的 JSR,这是个相当严谨的语言。

部署打包,Go 跟 Java 比真没什么太大优势,Java 项目一般只依赖个 JRE,其它都可以自动打包进来,而且不管是 windows 还是 Linux,不用分别打包。
tairan2006
2017-07-20 22:30:33 +08:00
@lxml 你说的那些优势 Java 更具备… Go 的 interface{}里面什么都能塞啊,写的很 trick 也不是不可能。

Python 已经很标准化了,毕竟崇尚只有一种最佳做法,写成牛鬼蛇神只能说队友水平参差不齐。
zjsxwc
2017-07-20 22:50:44 +08:00
总结楼上关于 go 与 java 的争论。

语言好不好主要看用的人,再工程化的语言用的人菜,照样能给你写出坑到爹都不认识的代码。
lxml
2017-07-20 22:52:20 +08:00
@tairan2006 #49 Python 虽然有各种最佳实践和规范,的确,队友水平习惯是的确是一个非常大的原因,大量使用魔术方法,元编程,也算 trick 的一种吧,甚至滥用 lambda,习惯也不好,不过这种我看了下的确没有一个十分清晰的规范能限制这种,写出来照样完美过团队代码检测啊,总不能让 HR 招大家水平都一样的来吧,但我们同样一批人,用 Go 写的相比 Python 确实好了很多,所以算作个人的一个体会。

@sagaxu

对 Java 生态和工具链了解不多,看了下我了解 Go 的优势和你说的 Java 优势相比,似乎确实没有什么太大的提高,可能正是之前你提到的原因导致很少有转 Go 的吧,加上国内本来这个也不好招人,没听说有大量部署的公司,自然生态就很差了。
yougg
2017-07-20 23:26:02 +08:00
@sagaxu 部署打包没什么优势? 对 JRE 的依赖就是最大的问题好吧,在 J9 才能有个去 JRE 解决方案。更别说各种 jar/不同版本依赖,能比编译后就唯一一个二进制文件部署方便?
mingyun
2017-07-20 23:50:16 +08:00
正好学 java
sagaxu
2017-07-20 23:58:05 +08:00
@yougg JRE 的依赖是最好搞定的依赖了吧,你可以用各个发行版自带的 OpenJRE,也可以解压即用 Oracle 官方的。不同库依赖不同版本的某个库,这不是 Java 独有的问题,Go 一样有这样的版本冲突问题。而且,Go 现在还比较依赖源码复用,而不是 binary 的复用。

典型的 Java 应用,也是打包成一个 jar 或者一个 war,一个二进制文件能比一个二进制文件+JRE 方便多少?
况且很多 Go 的库,依赖一些 so 或者 DLL,这个时候不是一个二进制文件搞得定的了,比如你试试分别用 Java 和 Go 做个带图形界面的软件,无论你用 Qt 还是其他 gui 库,在不同平台上打包都是个麻烦事。再比如一些 db 驱动,java 的直接在 jar 包里了,go 还要依赖对应的 so/dll,编译一个各个发行版通吃的 so 还是有点麻烦的。
DukeAnn
2017-07-21 13:58:48 +08:00
@cunkouwdy007 前端硬伤

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

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

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

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

© 2021 V2EX