一尘不染

从PHP到Java。有什么建议吗?

java

最近三年,我一直在用PHP进行Web应用程序开发。我现在快要尝试Java。我最近一次使用该语言是在8年前,而且大部分是学术性的。

我对PHP的对象模型(版本5)相当熟悉,并且我几乎完全是在OO中进行编码的。我现在想传达这种经验并将其用于Java开发。

我来自哪里:

  • linux作为桌面和服务器
  • Vim / gVim +插件作为编辑器
  • MySQL的数据库
  • apache httpd
  • 一堆PHP框架的使用经验,Zend + Doctrine是我使用最多的框架

到目前为止,我对Java的了解:

  • 我需要一个IDE:IntellijIDEA,NetBeans或Eclipse
  • 我需要选择一个开发框架。一些经常使用的名称:Spring MVC,条纹,检票口。

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

听起来可能很奇怪,但很少有人公开记录过自己的举动经历。我已经在google,amazon和stackoverflow上搜索了类似的问题,结果令人向往。我只是简直不敢相信,如果我想以Java的速度快速发展成为Web开发人员,我将需要像新手一样开始。

欢迎任何人回应,但我认为有些人在两种语言上都有宝贵经验将使这次讨论最丰富。

  • 是什么帮助您快速掌握Java?
  • Java中不存在哪些概念,而PHP中却缺少哪些概念,反之亦然?
  • PHP开发人员使用Java的一些陷阱。
  • 您觉得转换完成多久了?

阅读 210

收藏
2020-12-03

共1个答案

一尘不染

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

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

Java的在线文档是精确,专业的,并且在色调和格式上保持一致。与PHP中的所有功能都位于一个统一的命名空间中不同,Java中的标准库是类层次结构。您必须了解围绕该标准库的方式,这意味着了解
层次结构和职责
:例如,您必须了解这java.util.Listjava.util.Collection带有附加条目概念的子接口。有了这些信息,谷歌搜索java.util.List会将您带到该类的Javadoc,并且Javadoc将告诉您确切的方法签名并将您链接到一些具体的实现。

一些其他区别:

  • 字符串是 字符 序列,而不是字节序列。绝对正确的方法。
  • 系统产生并使用(字节或字符的) ,而不是字节缓冲区。例如,如果要过滤PHP中的输出,则标准做法是向ob_get_contents请求字节缓冲区,然后转换整个缓冲区。在Java中,您向Servlet添加了一个过滤器,该过滤器一次将输出转换为一个字节或一个字符。最初使用它有点麻烦,但是当您习惯它时它会变得更简单,更像Lego-流处理器不必知道事物的来源和去向。
  • 几乎所有有用的东西都是一个接口,并且创建接口的实例可能很棘手,不规范,而且记录不完备。在PHP中,您可以使用来启动并运行XML new DOMDocument()。在Java中,它org.w3c.dom.Document是一个接口,因此new()不起作用。Javadoc对于接口实例一旦存在就如何行为是非常精确的,但是当您试图找出对象的实际出生方式时,它可能会显得有些y和谨慎。很多时候,您将不得不寻找教程和代码示例,并复制粘贴一个样板,为您提供DOMDocument java.sql.Connection或其他实例。像Spring这样的框架之所以受欢迎,原因之一是它们将丑陋的对象创建代码分离开来,并为您提供了一个神奇的接口实现世界。

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

2020-12-03