当前位置: 首页 > 面试题库 >

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

吕承福
2023-03-14
问题内容

最近三年,我一直在用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的一些陷阱。
  • 您觉得转换完成多久了?

问题答案:

我不会在学习语言的同时尝试学习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流程可能会分散注意力,并且很难做好。



 类似资料:
  • 问题内容: 我正在做一个基于滚动2D地图/平铺的游戏。每个图块(存储为tile [21] [11]-每个地图总共231个图块)最多可以包含21个值(存储为int [3] [7])。在全屏模式下,我一次可以看到8张地图。 平均而言,每张地图的绘制时间约为0.03秒(可通过System.nanoTime找到)。问题在于,一旦在屏幕上显示多于一张地图,Swing事件轮询就会明显变慢。 有什么解决办法吗?

  • 我有一个很长的switch语句代码(大约8个案例),它决定了在浏览器中使用什么搜索来查找元素。有没有关于如何重构这段代码的建议? WebElement CurrentObject=null;切换(SearchBy){case“className”:尝试{CurrentObject=new WebDriverWait(driver,ConstantValues.LONGWAIT)。直到(Expect

  • 总的来说,问题是做什么?

  • 我们目前正在进行一个NLP项目,需要从tripadvisor中提取语料库。通用域名格式。我们期望输出为两种类型:注释和该注释的评级。我的问题是: > 是否有适合此目的的爬行工具?它必须易于使用,python是首选。我发现了一种很好的汤,但我想在这里问一下其他的建议。 有没有什么完整的工具只是为了这个目的?我是说为tripadvisor.com?写的程序 对于从大型网站获取数据(评论/评级)的任何其

  • 问题内容: 我从未见过 在任何地方实际使用过HTML标记。使用它有陷阱吗,这意味着我应该避免使用它? 我从来没有注意到它在现代生产站点(或任何站点)上使用过的事实,使我对此感到不安,尽管它似乎具有简化我站点上链接的有用应用程序。 编辑 在使用基本标签几周后,我确实发现使用基本标签会引起一些重大麻烦,这使它比最初出现的效果要差得多。从本质上讲,变化和基本标签下是_非常_有它们的默认行为不兼容,并可以

  • 问题内容: Java文档似乎并未提及有关的弃用的任何内容,但我一直很早就听说过它的弃用情况。是因为它具有错误/错误而被弃用,还是整体上更好使用? 我有一些使用的代码,我想知道我是否应该认真考虑将其重构为使用,还是弃用纯粹是为了方便而我的代码是安全的。 问题答案: 从javadoc中获取StringTokenizer: 是旧类,出于兼容性原因保留,尽管在新代码中不鼓励使用它。建议任何寻求此功能的人改