从PHP到Java.有什么建议?

Mic*_*oka 45 php java

我在PHP中过去3年一直在进行Web应用程序开发.我现在正准备给Java一个机会.我最近一次使用这种语言的时间差不多是在8年前,主要是学术性的.

我对PHP的对象模型(版本5)非常熟悉,我几乎完全用OO编写代码.我现在想传达这种经验并用它来开发Java.

我来自哪里:

  • linux作为桌面和服务器
  • Vim/gVim +插件作为编辑器
  • MySql for db
  • apache httpd
  • 经验丰富的PHP框架,Zend + Doctrine是我最常用的

到目前为止,我已经获得了关于迁移到Java的内容:

  • 我需要一个IDE:IntellijIDEA,NetBeans或Eclipse
  • 我需要选择一个开发框架.一些经常出现的名字:Spring MVC,stripe,wicket.

现在我需要一些有助于使这种过渡更顺畅的见解.但是从人们谈论它的方式来看,Java似乎是一个拥有自己生态系统的全新野兽.听起来好像转移到Ruby或Python实际上会更容易,这很奇怪,因为当我看到它时,Java在概念上似乎最接近PHP,尽管更严格和预编译.

虽然听起来很奇怪,但很少有人公开记录他们对此类举动的体验.我搜索了谷歌,亚马逊和stackoverflow类似的问题,结果留下了欲望.如果我想快速成为Java中的Web开发人员,我就无法相信我需要像新手一样开始.

欢迎任何人回复,但我有点认为,对这两种语言都有一些宝贵经验的人会最充实地讨论这个问题.

  • 什么帮助你快速进入Java?
  • 什么概念在Java中无处不在,而PHP中缺少哪些概念,反之亦然?
  • PHP开发人员使用Java的一些问题.
  • 你觉得过渡完成多久了?

小智 22

在学习语言的同时,我不会尝试学习IDE.更简单的过渡是坚持使用shell和习惯性文本编辑器,并使用以下适合shell的工具:

  • ant,用于组织项目,运行自动化测试套件,增量编译
  • BeanShell用于交互式测试,快速尝试
  • 一个快速的技巧:javap从命令行将为标准库中的任何类提供方法签名.与php -rJava类型相似但提供更多信息.

Java的在线文档精确,专业,并且在语气和格式上保持一致.与PHP中的所有函数都在一个平面命名空间中不同,Java中的标准库是类层次结构.你必须了解你的标准库,这意味着了解层次结构+职责:例如,你必须知道这java.util.List是一个java.util.Collection添加了有序条目概念的子接口.有了这些信息,Google搜索java.util.List会将您带到类的Javadoc,Javadoc将告诉您确切的方法签名并将您链接到一系列具体实现.

一些杂项的区别:

  • 字符串是字符序列而不是字节序列.绝对是正确的做法.
  • 系统生成和使用(字节或字符)而不是字节缓冲区.例如,如果要在PHP中过滤输出,标准做法是向ob_get_contents询问字节缓冲区,然后转换整个缓冲区.在Java中,您向servlet添加一个过滤器,该过滤器一次转换输出一个字节或一个字符.最初工作有点气势,但是当你习惯它时它更简单,更像乐高 - 你的流处理器不需要知道它们来自何处以及它们去向何处.
  • 几乎所有有用的东西都是一个界面,创建一个界面实例可能很棘手,非标准化,而且并不总是有详细记录.在PHP中,您可以使用XML启动和运行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流程可能会分散注意力并且难以做好.


Tho*_*sen 8

从Java Tutorial开始

http://java.sun.com/docs/books/tutorial/getStarted/index.html

然后去购买Head First Java

http://oreilly.com/catalog/9780596004651

无论您想做什么,它都能让您快速掌握必不可少的语言.


Poi*_*nty 8

严格来说,您不需要 IDE在Java中工作.十多年来我一直在使用Java进行大量编码(并且在其他方​​面已经超过25年了),而且我不太喜欢IDE.也许这个隐含的年龄指标是问题的一部分:-)这是一种权衡,就像其他任何事情一样.

我将插入Stripes作为一个很好的简单框架,但主要是因为它相对较小且范围有限.像Spring这样的大型框架是"厨房水槽"生态系统,使用其中一个框架学习Java可能会使一些困难的部分变得平滑但却让其他基本方面变得神秘.同样,这是个人偏好的问题.

有人知道这种语言是很好的.哦,到那时,结交Java API文档的朋友.随着平台的发展,Java API有其起伏,但在大多数情况下,文档至少非常彻底且非常准确.

您还希望熟悉JSP及其与Java和Java Web服务体系结构的关系,因为这将是您与PHP体验最直接相关的(我认为).

  • 不使用IDE了解您正在编程的语言,浪费自己和雇主的时间. (5认同)

ric*_*ick 5

我做的最好的举动是从Java到PHP.

注意复杂性.首先,优秀软件的关键是简单性,这就是PHP结合良好框架杀死Java的原因.

使用Java,您可能会成为servlet容器和框架的奴隶.选择最简单,最灵活的框架.控件和自定义标签是魔鬼.你会浪费时间学习旨在使开发更快的东西,但最终过于复杂和不灵活.由于以下原因,Java将减慢开发速度:复杂性,编译和静态类型.你会厌恶空指针异常.

编辑:除了工具,Java和PHP是非常类似的结构"C"风格的语言.远远超过Python或Ruby.正是静态类型和复杂工具使Java如此陌生.

  • 静态类型是_the_ quality,可以用Java构建大教堂.在我看来. (8认同)
  • *Chacunàsongoût*当然,但是你所说的逃离Java的理由大部分都是强大的优势和"动力工具".但我确实同意框架选择非常重要,这是一个很难建议,因为它是如此主观. (3认同)
  • 对于Web开发,PHP有一个杀手级别的参数:您不必为每一个小变化编译您的东西. (2认同)