关于 J2EE 转型 Python 的相关请教

2014-07-06 20:51:49 +08:00
 tan9le
刚刚发了一篇,把Golang其实也是带上的,写了半天,点了创建,没有任何错误提示,但是缺没有创建成功?@Livid 是现在有审核/延迟机制,还是我操作不当?总之我在我自己发布的主题里也找不到。

情况是这样的,我们公司大多数的项目都是使用Struts2+Spring+Mybatis进行开发的,由于今年又新进了一些小白(校招进来的,有一部分是纯小白),我最近在琢磨着拉出一只小团队,使用Python把我们的部分产品进行重写,一方面是做技术积累,另外一方面其实是看中了Python的开发速度和便捷性。

在V2EX中潜水了这么长时间以后,我初步的想法是使用Tornado+sqlalchemy,但是心中还存在几个比较大的疑惑希望各位V友给予解惑

1.有无像Spring面向切面和依赖注入的成熟技术方案或者框架?

2.我搜索到Python方面进行事物控制基本都依赖于手动提交数据库事物,有没有分布式的事务管理和面向切面的事务管理?

3.在数据库访问方面,JAVA的JDBC非常方便,但是在Python上我目前的调研结果是比较复杂,就比如访问Oracle,JAVA只需要将JDBC的jar包放在类路径内就可以直接访问,我可以在应用中打包mysql、mssql、oracle等等的jar包,而Python好像每种数据库都对应着不同的配置方式,就比如Oracle的连接,就依赖于Oracle客户端和Oracle的一些环境变量的配置,这一块有没有不依赖于环境的,比较简单的解决方案?

3.在应用发布方面,J2EE将所有的第三方类库都可以打包进应用,或者统一配置在类路径下就可以,Python我好像没有搜索到什么简便的办法,都在说使用VirtualENV+pip来构建环境,能不能象JAVA一样打包进工程内,而摆脱服务器环境的依赖?这点其实蛮重要的,我们的研发和实施是两个团队,实施团队已经习惯了扔个war包进行就可以运行。

4.我们目前采用了Dubbo+Zookeeper的架构来应对高并发场景,Python在高并发、分布式上有没有成熟的技术方案?

希望这次主题能够发成功,请各位V友多给点意见,谢谢!
6504 次点击
所在节点    Python
40 条回复
helloworld00
2014-07-07 00:31:06 +08:00
dropbox都从python跳到go了。。。
2ex
2014-07-07 08:49:54 +08:00
从目前来讲Python用在生产环境还是挺好得。Web框架建议用DJango,Tornado太过于精简了,到头来基本得session等功能都要靠自己来实现,另外tornado得资料没多少,django资料是海量。新人遇到问题很容易可以在stackoverflow等站上找到解决办法。
Golang基本上都是用来写后台高并发的,用作写web不是不可以,但明显不是最方便的。
tan9le
2014-07-07 08:50:54 +08:00
@helloworld00 golang目前还没达到我们团队能够消化的地步,只能尝尝鲜
tan9le
2014-07-07 08:55:43 +08:00
@2ex 我相信就技术语言本身而言,大家都差不多,只有实现复杂度的问题,而真正能被企业应用所使用的往往是它有没有丰富的,成熟的解决方案和实施路径。django在解决我提出的问题上我好像没搜到什么方案呀
tan9le
2014-07-07 08:59:09 +08:00
@2ex 还有一个地方可能是我没描述清楚的,我们大多数的应用是包含移动终端的,django我的调研结果是做web应用比较有优势一些,不知道理解的是否正确?
mengzhuo
2014-07-07 09:19:30 +08:00
@est

2年Python开发表示服务器上改文件中枪……还附赠reload

-----------------------------------------
Tornado
IOLoop坑比较大,小心数据库没有驱动

sqlalchemy
第三方插件良莠不齐……也得小心

----------------------------
楼上吐槽Python多人开发就不行了,明显是队友、沟通、合作不给力啊,曾经和6个人一起开发过的表示没有压力。
jjx
2014-07-07 09:32:27 +08:00
俺这几年主要的一个事项就是用python做erp开发, 先期语言经验包括c/vb/java/c#/delphi/pb/x++等,对于企业db应用,动态语言是最好的选择, python是动态语言中最好的选择. 理由就不讲了, 无法理解的人永远无法理解

至于lz, 明显的python新手, 我觉的还是自己先积累几万行的代码经验后再动这个念头会好
tan9le
2014-07-07 09:57:19 +08:00
@jjx 的确是新手,都是自己看看,仅仅是看看哦,所以才来请教大家。

现在所处的岗位已经不允许我去敲代码了,所以我在实施前是需要调研清楚的
est
2014-07-07 10:07:25 +08:00
@tan9le 还有不允许敲代码的岗位。真好。
tan9le
2014-07-07 10:24:09 +08:00
@est 好什么呀,偏离了当初的理想。
不是明令禁止写代码,而是没有时间去写了,包括周末
sharewind
2014-07-07 10:26:05 +08:00
写过python 和 java ,真心觉得还是java 稳妥。。。。
vicalloy
2014-07-07 10:43:49 +08:00
@mengzhuo 楼主是想让小白来做,所以我认为“不适合多人开发”是合理的吐槽。
脚本语言由于太过自由(python已经算比较不“自由”的),会给人各种犯错的机会。
让一群小白协作很容易失控。
相比而言JAVA只要能编译通过就已经成功大半了。
timonwong
2014-07-07 10:59:31 +08:00
想让代码迅速腐化吗?那就让一群Python新手开发项目吧,除非这个项目不重要,而且持续时间比较短。
incompatible
2014-07-07 11:02:55 +08:00
@jjx 请教几个问题
1 什么是企业db应用?
2 分布式事务在python下有解决方案伐?
3 工作流有没有现成的开源组件?

万谢
tremblingblue
2014-07-07 11:10:44 +08:00
感觉这样的项目转为jee感觉就是挖个大坑自己跳,而且都是新手的话,还是那么多人,感觉真的不大建议.

从公司层面这样做真的不大好.当然对于lz自己的能力啊什么的这个挑战其实挺不错的.
cloud107202
2014-07-07 11:21:56 +08:00
建议坚持java
动态语言开发速度是建立在非特别复杂/非大型非企业应用的前提下
更何况对于复杂/多人协作/大型/企业应用来说,比开发速度更重要的点多了去了。Java作为工具链丰富,语法严谨的工业语言非常合适
timonwong
2014-07-07 11:22:46 +08:00
@incompatible
2. 整套方案用Python实现的估计,MQ有个WebSphere MQ的binding, PyMQI,没有用过不做评价
3. Python的工作流主要关注的是数据,而不是业务。了解过spiff,用过OpenStack的taskflow,感受是真不好用。
mengzhuo
2014-07-07 12:51:36 +08:00
@vicalloy

“相比而言JAVA只要能编译通过就已经成功大半了。”
----------------------
把代码(人)的问题/错误推给语言,太不靠谱了
incompatible
2014-07-07 23:43:37 +08:00
@timonwong
2. 感谢。 但是MQ和分布式事务实际上不是同一个东西
前者是jms的实现,后者是xa规范
incompatible
2014-07-07 23:53:02 +08:00
@mengzhuo
是人都会犯错误 语言的特性决定了错误是在编译期就被发现还是运行时才被发现
拿duck typing举例: java不支持这种玩意儿(当然你也可以用反射来实现),所以永远不会出现系统跑起来了结果发现传给某个方法的参数并不是它想要的这种事情

我个人认为在大型工程中,基于接口编程比基于约定编程要靠谱的多

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

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

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

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

© 2021 V2EX