PHPer 想学 Java Web

2017-05-29 20:29:30 +08:00
 sfree2005

最近看了一些框架性能的对比,感觉还是有些担心 PHP 框架在某些业务场景扛不住,所以想学学 Java web, 在多任务,并行计算,处理并发上发挥优势。

Java 的生态环境不用说,该有的都有,搬砖就是,需要思考的就是针对实际的应用场景选择合适的架构。

工作之后后端都是用 PHP,最后用 Java 还是在学校的时候,只是写了些简单的小程序。大概在网上搜了下,了解到 Spring 应该是比较大而全的框架,Dropwizard 比较轻量级。

都说现在的趋势都是 Microserivce,所以我应该比较偏向使用 Dropwizard. 前后端分离,就只用 Dropwizard 做 API。 例如我可能用 PHP 负责网站登陆模块,Java 负责高级搜索模块。

熟悉 Java 的朋友,你们觉得我的想法有没有得搞?

6485 次点击
所在节点    Java
43 条回复
reeco
2017-05-29 20:50:29 +08:00
学 Spring
sfree2005
2017-05-29 20:57:00 +08:00
@reeco #1 如果我只是做些小功能, 也是上 spring 比较好吗?
sorkl
2017-05-29 21:07:27 +08:00
@sfree2005 spring 全家桶,微服务请使用 spring boot。BTW,i'm a PHPer
likezun
2017-05-29 21:57:03 +08:00
有这样的想法,只能说楼主浅薄
edsgerlin
2017-05-29 22:01:49 +08:00
@likezun 别光吐槽,有何高见呢。我觉得 Dropwizard 挺好的,就是国内企业感觉没什么用的……
mewushuang
2017-05-29 22:13:36 +08:00
spring boot 上手,简单粗暴
Reign
2017-05-29 22:23:56 +08:00
有些人啊,平时写写 PHP,用用 WP 之类的,还挺好的,突然有一天就开始学 Java 了,哎,年纪轻轻的,可惜了
0915240
2017-05-29 23:00:45 +08:00
简单服务没必要 spring 全家桶

轻量级的 dropwizard vertx 之类的完全可以玩玩
hujianxin
2017-05-29 23:04:24 +08:00
只做小功能?那没必要上 java。既然你要学 Java,那就不用考虑小场景了,小场景继续用你的 php 就行啊
iVanilla
2017-05-29 23:08:48 +08:00
学 Python 或者 Ruby 的 Rails 不是更好?
追求高效率还有 Go 语言!
lsido
2017-05-29 23:27:45 +08:00
工作之后很少用 java,上线部署修改等等一系列确实不太友好,除了一些系统应用,基本都是用 php,lz 实在要上 Java,最好把 ssh ssm 都走一遍再用 boot
qiukong
2017-05-30 03:03:39 +08:00
建议楼主先去学一学 javascript
sfree2005
2017-05-30 07:51:02 +08:00
@hujianxin 我说的“小功能"是指业务逻辑目的比较单一,或许只是某一个模块,但它有可能承受整个 app 的大部分计算量或者要求速度很快,并发高的要求。另一方面,php 在异步处理,并行计算上不是很给力,所以想引入 Java。
sfree2005
2017-05-30 07:52:50 +08:00
@qiukong 恩 有学的,平时工作会用到 Angular 1/2, 据说不少 Angular 的概念都是从 Java 引入的。
sfree2005
2017-05-30 07:58:40 +08:00
@iVanilla 恩呀 我也想学 Go, 它的性能的确很棒,我就是担心它相对比较新,生态没有老 Java 那么丰富。据我的了解,它更适合系统级别的功能,能用于写 Docker 也说明了这一点。我在想如果 app 需要更接近底层的优化,Go 或者 C++是逃不掉了。
sfree2005
2017-05-30 08:05:42 +08:00
@Reign 有什么详细的论述吗?不是很看得懂,或者引用一些文章支持你的论点?
nicevar
2017-05-30 09:56:49 +08:00
既然你已经有 java 基础,php 也是用了很长时间,数据库这一块知识已经又了,去学 spring 花不了多长时间,找点稍大的项目看一下,一个星期就够了,前期主要就是掌握增查删改,一些深度问题需要后期慢慢磨练了。
ixiaohei
2017-05-30 09:59:13 +08:00
作为一个几年的 java 建议你,java web 学 spring springMVC mybtais 就行了。另外 Dropwizard 没有听说过,应该很小众。可以了解 spring boot 开发,简单粗暴。另外如果真想学习 java 就要肯花时间了,java 体系太庞大。其中很多可以不用学。如果单纯 java web 路线。先学习 servlet、jsp,后面几乎用不上这些,框架都封装了,基础还是这些东西。了解下 tomcat、其他的 java ee 中间件可以不用了解了( weblogic 等)。另外 springMVC 必须要学的,现在做项目做网站都有这个东西了。spring 理解下 ioc 控制反转,aop 这些东西。另外 ORM 框架只学习 mybtais 就行,上手简单,hibernate 别去学(太重,而且现在互联网项目几乎不用)。另外我以前也是开发 php,php 除了不用编译,随意部署这点优点外,真心跟 java 没法比工程协作,运行效率。( php5 开发的时候面向对象和过程齐飞,变量不定义直接使用写代码很爽,读起来累,java 强制面向对象,强类型,虽然语法有点啰嗦,没有太多语法糖,偏于多人协作开发,java 是编译语言,jvm 效率完爆一切动态语言是一切,除了很耗内存外这点缺点外,垃圾回收器已经是所有带垃圾回收中最先进的了,不过以前在上位机开发 php5 内存随便占用 100m,也没有见 php 垃圾回收有多好)。另外可能 java 跟 php 不一样的是:php 一个请求完之后所有资源释放,新手不容易弄出内存泄漏,但 java 不一样。要多了解 java servlet 生命周期,多注意静态变量,这些新手很容易搞出内存泄漏。另外平时多了解基础知识就行了,深入 jvm 就行了。简单上手懂语法就行了。good luck。
另外多关注 spring 家族的东西。
ixiaohei
2017-05-30 10:02:18 +08:00
另外 java 微服务了解下 spring cloud。一套成熟的微服务解决方面。以 spring boot 为基础,集成了 netflix 开源 ereuka ribbon zuul 等核心框架。可能是以后 java 微服务主流。不过现在国内用阿里的 dubbo 居多。
gouchaoer
2017-05-30 11:12:16 +08:00
高耗 cpu 的地方用 php-cpp 写成扩展

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

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

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

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

© 2021 V2EX