从PHP到Java。有什么建议吗?[已关闭]

2022-08-30 10:54:41

在过去的3年里,我一直在PHP中进行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,条纹,wicket。

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

尽管这听起来很奇怪,但很少有人公开记录他们对这种举动的体验。我已经搜索了谷歌,亚马逊和stackoverflow,寻找类似的问题,结果留下了渴望。我只是不敢相信,如果我想快速成为Java中的Web开发人员,我需要像新手一样开始。

欢迎任何人做出回应,但我有点认为,在两种语言方面都有宝贵经验的人会最丰富这个讨论。

  • 是什么帮助你在Java中快速入门?
  • 哪些概念在Java中无处不在,而PHP中没有,反之亦然?
  • PHP开发人员使用Java的一些陷阱。
  • 在你觉得过渡完成之前多久?

答案 1

我不会尝试在学习语言的同时学习IDE。一个更容易的过渡是坚持使用你的shell和习惯的文本编辑器,并使用以下shell友好的工具:

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

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

一些杂项的区别:

  • 字符串是字符序列,而不是字节序列。绝对正确的做法。
  • 系统生成和使用(字节或字符)而不是字节缓冲区。例如,如果要在 PHP 中筛选输出,标准做法是要求ob_get_contents提供字节缓冲区,然后转换整个缓冲区。在 Java 中,您可以向 servlet 添加一个过滤器,该过滤器一次将输出转换为一个字节或一个字符。最初使用它有点气势磅礴,但当你习惯它时,它更简单,更像乐高 - 你的流处理器不必知道东西来自哪里以及它们去哪里。
  • 几乎所有有用的东西都是一个接口,创建一个接口的实例可能很棘手,非标准化,而且并不总是有很好的文档记录。在 PHP 中,您可以使用 .在Java中,它是一个接口,所以new()将不起作用。Javadoc非常精确地描述了接口实例一旦出现后的行为,但是当你试图找出一个对象是如何诞生的时,它可能会非常腼腆和谨慎。通常,您必须查找教程和代码示例,并复制粘贴一段样板,该样板文件为您提供了DOMDocument的实例或其他任何内容。像Spring这样的框架之所以流行,一个原因是它们分离出了丑陋的对象创建代码,并为您提供了一个界面实现神奇的世界。new DOMDocument()org.w3c.dom.Documentjava.sql.Connection

我实际上向相反的方向切换。我发现Java在一家大公司中运行得很好,你可能正在处理单个组件,把它交给其他人,他将该组件集成到一个更大的系统中,然后将其打包并移交给一个单独的运营团队 - 这就是所有这些间接性和可配置性(类型抽象,web.xml文件, 等)有意义,并做了一些有用的事情。在一家以程序员运维人员的小公司中,Java需要做更多的工作。使用Java,您必须习惯于启动Java进程,监视Java进程以确保其保持运行状态,监视Java进程以确保它不会进入昏迷状态,其中它处于活动状态但不响应,在更新代码时以最小的中断关闭并重新启动Java进程, 等等,等等。如果你有单独的运维人员,那很好,这是他们的工作,他们非常擅长。如果你是一个程序员,照顾Java进程可能会分散注意力,很难做好。FactoryBuilderFactory


答案 2

从 Java 教程开始

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

然后去买头先爪哇

http://oreilly.com/catalog/9780596004651

它会让你在语言中非常快速地前进,无论你想做什么,这都是必不可少的。


推荐