我在PHP中过去3年一直在进行Web应用程序开发.我现在正准备给Java一个机会.我最近一次使用这种语言的时间差不多是在8年前,主要是学术性的.
我对PHP的对象模型(版本5)非常熟悉,我几乎完全用OO编写代码.我现在想传达这种经验并用它来开发Java.
我来自哪里:
到目前为止,我已经获得了关于迁移到Java的内容:
现在我需要一些有助于使这种过渡更顺畅的见解.但是从人们谈论它的方式来看,Java似乎是一个拥有自己生态系统的全新野兽.听起来好像转移到Ruby或Python实际上会更容易,这很奇怪,因为当我看到它时,Java在概念上似乎最接近PHP,尽管更严格和预编译.
虽然听起来很奇怪,但很少有人公开记录他们对此类举动的体验.我搜索了谷歌,亚马逊和stackoverflow类似的问题,结果留下了欲望.如果我想快速成为Java中的Web开发人员,我就无法相信我需要像新手一样开始.
欢迎任何人回复,但我有点认为,对这两种语言都有一些宝贵经验的人会最充实地讨论这个问题.
小智 22
在学习语言的同时,我不会尝试学习IDE.更简单的过渡是坚持使用shell和习惯性文本编辑器,并使用以下适合shell的工具:
javap
从命令行将为标准库中的任何类提供方法签名.与php -r
Java类型相似但提供更多信息.Java的在线文档精确,专业,并且在语气和格式上保持一致.与PHP中的所有函数都在一个平面命名空间中不同,Java中的标准库是类层次结构.你必须了解你的标准库,这意味着了解层次结构+职责:例如,你必须知道这java.util.List
是一个java.util.Collection
添加了有序条目概念的子接口.有了这些信息,Google搜索java.util.List会将您带到类的Javadoc,Javadoc将告诉您确切的方法签名并将您链接到一系列具体实现.
一些杂项的区别:
new DOMDocument()
.在Java中,org.w3c.dom.Document
是一个接口,所以new()不起作用.Javadoc非常精确地说明了接口实例在它们存在后的行为方式,但是当你试图找出一个对象实际诞生的时候,它可能会非常腼腆和谨慎.通常,您必须查找教程和代码示例,并复制粘贴一段样板文件,该文件板为您提供DOMDocument java.sql.Connection
或其他任何实例.像Spring这样的框架流行的一个原因是,它们将丑陋的对象创建代码分离出来,并为您呈现一个界面实现神奇的世界.我实际上转向了相反的方向.我发现Java在一个大型公司中工作得非常好,你可以在一个组件上工作,把它交给一个将该组件集成到一个更大的系统中的其他人,然后将其打包并交给一个单独的运营团队 - 这就是所有这些间接和可配置性(FactoryBuilderFactory
类型抽象,web.xml文件等)都有意义,并做了一些有用的事情.在程序员是操作人员的小公司中,Java需要做更多的工作.使用Java,您将不得不习惯于启动Java进程,监视Java进程以确保其保持运行等概念,监视Java进程以确保它不会陷入昏迷状态当你更新代码等时,没有响应,关闭和重新启动Java进程,中断最少.如果你有单独的操作人员,那很好,这是他们的工作,他们非常擅长.如果您是一名程序员,那么照看Java流程可能会分散注意力并且难以做好.
从Java Tutorial开始
http://java.sun.com/docs/books/tutorial/getStarted/index.html
然后去购买Head First Java
http://oreilly.com/catalog/9780596004651
无论您想做什么,它都能让您快速掌握必不可少的语言.
严格来说,您不需要 IDE在Java中工作.十多年来我一直在使用Java进行大量编码(并且在其他方面已经超过25年了),而且我不太喜欢IDE.也许这个隐含的年龄指标是问题的一部分:-)这是一种权衡,就像其他任何事情一样.
我将插入Stripes作为一个很好的简单框架,但主要是因为它相对较小且范围有限.像Spring这样的大型框架是"厨房水槽"生态系统,使用其中一个框架学习Java可能会使一些困难的部分变得平滑但却让其他基本方面变得神秘.同样,这是个人偏好的问题.
有人知道这种语言是很好的.哦,到那时,结交Java API文档的朋友.随着平台的发展,Java API有其起伏,但在大多数情况下,文档至少非常彻底且非常准确.
您还希望熟悉JSP及其与Java和Java Web服务体系结构的关系,因为这将是您与PHP体验最直接相关的(我认为).
我做的最好的举动是从Java到PHP.
注意复杂性.首先,优秀软件的关键是简单性,这就是PHP结合良好框架杀死Java的原因.
使用Java,您可能会成为servlet容器和框架的奴隶.选择最简单,最灵活的框架.控件和自定义标签是魔鬼.你会浪费时间学习旨在使开发更快的东西,但最终过于复杂和不灵活.由于以下原因,Java将减慢开发速度:复杂性,编译和静态类型.你会厌恶空指针异常.
编辑:除了工具,Java和PHP是非常类似的结构"C"风格的语言.远远超过Python或Ruby.正是静态类型和复杂工具使Java如此陌生.