Java Web出身,想学python,求指点

2011-04-04 16:07:24 +08:00
 xiluo
先从Django着手,如何?
8175 次点击
所在节点    Python
28 条回复
xiluo
2011-04-07 23:44:35 +08:00
@qichangxing
really?
keakon
2011-04-08 00:11:48 +08:00
@jeeson Java在GAE上只能算2等公民,很多Python已有的特性,Java要等半年、1年甚至永远不会实现。而且Python的datastore api是最接近实际情况的,Java就算是低级api也只能看到个表象,触摸不到内在的,想要优化都只能捉襟见肘。
jeeson
2011-04-08 00:29:43 +08:00
@keakon Java 不是我长项, 我选择它只是因为接近C++, 更习惯些. Python更是不了解, 所以没法比较

但是, 你说的 "Java在GAE上只能算2等公民", 我不同意, 不过我没有特别在意过新特性对比, 所以也不好反驳

关于 datastore api , 目前为止, 并没有真正权威的比较哪个性能更好, Java底层接口的第三方封装已经极大的改进性能.

另外, 意外的是, Java更快(执行速度)!
keakon
2011-04-08 01:48:33 +08:00
@jeeson 我想说的是,如果你用Java,你永远不可能知道datastore api真正是怎么样的。Python可以看到所有的细节,包括与服务器打交道时传输的字符串信息;同时它又提供了远强于Java的表达能力,不会像Java定义模型时那么痛苦。

从一开始进行数据库设计时,你就无法为其做出最佳的设计,因为Java把这些底层的细节封装掉了。并不是说Java就不能提供给你这些细节,而是它的表达能力太差,你得花费我不敢想象的精力去实现,至少Google的员工都没做到。因为你不了解Python,所以我没法给你形象地表达它们之间的差别。如果你肯花费时间,钻得比文档更深(阅读相关的文章和SDK源码,看Google I/O和Google员工的解释),你就会知道它们之间决定性的差异。

我说Java是2等公民也不是瞎说,从GAE/Java诞生开始,每个版本的变化我都有关注。最明显的一个例子就是最近的SDK 1.4.3,Java新加入的Deferred库是09年时Python SDK就已经包含了的。然后datastore实际上早就有异步API了,去年还增加了一个纤程的实现,然而Java由于不能多线程,我想最多在未来数月以回调函数的方式来实现吧。好吧,我又人为地进行简化了,Java的函数还不好传递,得实现一个类然后扔过去。
jeeson
2011-04-08 11:01:54 +08:00
@keakon GAE/Java版 datastore API 支持异步, 不是回调, 当然, 可能比Python晚许久支持的

http://code.google.com/p/objectify-appengine/wiki/IntroductionToObjectify#Asynchronous_Calls

The GAE's low-level datastore API supports parallel asynchronous operations. GAE's model of asynchrony does not follow Javascript's "pass in a callback function" model; rather, when you make an asynchronous call, you get back a reference to the pending operation. You can create multiple references which will execute in parallel, however, any request to fetch a concrete result will block until the result is available.

能像你这样深入到核心/源码的毕竟少数, 这对大部分开发人员来说未必是件快乐的事情 :)

对我来说只是工具而已, 暂停吧.
keakon
2011-04-08 11:32:04 +08:00
这个项目不是google维护的,而是开发者不爽google的实现去自创的,连google自己的员工在论坛里都要开发者去使用这个库,而不是自带的。我只能说这个例子更加证明了java是2等公民,因为google的员工精力真的没怎么放在上面。gae team是在旧金山,人数并不多,写博客的很少,但写出来的基本都是python相关的。

如果你有关注过sdk的发展,java sdk在某些版本发布时甚至连文档都来不及更新,更别提例子了。

实现就算不能深入源码,至少也要掌握原理。做数据库设计的如果只知道sql,你能期待他做出什么设计?
alsotang
2011-09-10 23:13:31 +08:00
@keakon java是gae的二等公民是非常显而易见而且已经经过各种讨论的事情了嘛。。。
darasion
2011-09-10 23:22:21 +08:00
忘记java. 你就学好python了. 反过来也是.

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

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

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

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

© 2021 V2EX