我于12月毕业于计算机科学专业,并获得了软件工程职位。我试着学习Hibernate,Spring以及在我的第一个项目中抛出的所有其他东西,一直在撞墙直到2个月。在接受这份工作之前,我只有编程经验。应用程序架构和工程工具一直很难掌握。我希望有人能够告诉我一个开始理解基于Java的Web应用程序如何工作的好地方。有这么多的组件,我无法弄清楚一切是如何组合在一起的。所以,我的问题是。
答案 0 :(得分:21)
从基础开始。
我的意思是servlet和Web容器,可能是Tomcat。您应该了解servlet生命周期,无论您之后碰巧使用什么框架。
接下来,如果您愿意,将JSP放入混合中。无论如何,JSP都是美化的servlet(它们被编译成servlet代码然后编译成字节码)。
之后添加一个MVC框架。多年前,曾经是Struts(1)。如今它有点困难。我喜欢Spring MVC,但这在某种程度上也取决于Spring。而且我认为你(现在)绕过更多的Ajaxy类型框架(比如Tapestry或Wicket)或者更多的端到端解决方案(比如Seam)会过度紧缩这个问题。你在这里要理解的一点是MVC概念是什么,它是如何工作的以及你为什么要这样做。
之后添加Spring。这里的要点是学习依赖注入/控制反转(IoC)的原理。这是现代Java开发和软件开发中一个非常重要的概念。
以上实际上遵循这些技术如何演变,按照它们的发展顺序。他们出于某种原因这样做,并遵循这条道路将帮助您理解这一点。
不要听任何告诉您不需要理解纯servlet API等低级概念和技术的人。这是无稽之谈。
答案 1 :(得分:8)
我认为Mike Gunderloy的书Coder to Developer可能值得一看。
关于学习新技术,没有比尽可能多地使用它和practice with it更好的方法了。
答案 2 :(得分:7)
我的学习方式是自己建立一些东西。我通常选择一些可以快速实施的微不足道的东西,然后使用当下的企业技术XYZ,以便我可以四处寻找并了解细节。事实上,我正在努力学习ASP.NET MVC。
答案 3 :(得分:3)
当您是您的工具专家和您正在使用的语言/技术时,一批新的孩子将使用更新的更好的工具和语言/技术。然后你必须学习那些才能找到工作。所以习惯这个过程
答案 4 :(得分:3)
所有好的答案,当你挣扎时,也许你可以向你的教授发一点反馈:
答案 5 :(得分:2)
这些应该有助于学习:
https://stackoverflow.com/questions/19551/how-to-plan-your-learning-process-efficiently
https://stackoverflow.com/questions/771771/how-to-learn-new-techniques
答案 6 :(得分:2)
理论&练习
答案 7 :(得分:2)
从asp.net转到jsp Head First Servlets & JSP, Second Edition时,我真的很喜欢这本书。
对于熟悉编程和网络但又不太了解jsp,servlet和mvc如何协同工作的人来说,这是一本很棒的入门读物。
答案 8 :(得分:2)
继续前进。作为程序员在新工作上度过2个月并且仍然觉得自己正在陷入流沙中并不罕见。我曾经遇到过这样的情况:我需要花费6个月的时间来完成一项新的工作才能进入一个我觉得我终于转过头来的阶段,那是在经历了10年的经验之后。虽然在这种情况下掌握代码库就像试图破译埃及象形文字一样。
答案 9 :(得分:2)
老实说,如果你能在大学通过计算机科学,那么工作队伍就更容易,只是与众不同。你不应该像在大学那样努力地碾压你的大脑,这无论如何都是我的经验。无论如何,计算机科学家和软件工程师之间没有太大的区别,非常微妙的差异,但可以互换。
我的建议是,在你转向学习框架和花哨的脚本库(如hibernate,jQuery等)之前,确保你能熟练使用XHTML / CSS / Javascript / SQL。你可能已经因为你的背景,但如果没有,这些核心基础将让您了解当您的花哨框架在整个地方自动生成代码时真正发生的事情等等。
我知道那些在不深入了解SQL的情况下直接进入ORM的人。他们喜欢ORM,但他们并不真正理解底层发生了什么,当花哨的小ORM产生一些非常低效的SQL时,他们会挣扎,因为他们不知道如何覆盖它并编写自己的SQL。
另外请注意,hibernate和某些类似的框架可能会有很多膨胀,并不总是实现简单任务的最佳方式。对于很多事情来说,它们可能是极端的过度杀伤力。再次,首先回到你的面包和黄油语言。构建没有框架的东西。如果你了解到你经历了大量的重复编码,翻倍,咕噜咕噜和粘贴,高维护,那么从中吸取教训,然后转移到适合你需要的框架。
但是一旦你熟悉了这个垃圾,你的计算机科学大脑将会变得更加轻松,你会发现它很容易。
答案 10 :(得分:2)
大约一年前,当我开始工作时,我不得不经历这样的事情。我的解决方案是阅读我可以获得的代码库中的每一点。如果您遇到弹簧问题,这将特别有用。跟踪所有配置文件是否发生以及与代码相关的位置,其中的内容发生了变化以及原因。至于hibernate,请使用它并阅读注释文档(这对我来说是最困难的部分)。
最后自愿参加任何随机项目,特别是如果您从未使用过这些技术。去年我参与了许多与我日常工作无关的项目,并从这些项目中学到了比我四年大学更多的知识。
祝你好运答案 11 :(得分:1)
我来自计算机科学与技术工程学位到软件工程。我在尝试学习新技术时使用了一种技术。它通常是这样的。
我不能保证它会对你有用,但它对我有很大的帮助。
答案 12 :(得分:1)
在彻底了解JDBC之前,请不要使用Hibernate。
您没有说明您是否拥有关系数据库或SQL的任何背景知识。两者都是必不可少的。
我喜欢春天,但是你应该意识到你不需要吞下整个东西来从中受益。例如,您可以使用JSP和JDBC模块从Spring Web UI中获得很多好处。暂时离开Hibernate直到你对Spring感到满意为止。
解决问题,特别是在计算机科学中,是将大问题分解为较小的问题。缩小问题的大小,专注于一件事。使用JDBC的Web应用程序,然后是Spring,然后是Hibernate将是我推荐的进展。
答案 13 :(得分:1)
要理解的第一件事是Servlet规范,因为它描述了Java Web应用程序基本上遵循的所有基本功能。这不是轻松的阅读,但只是一般的把握会让你很快。
答案 14 :(得分:1)
两年前我在同一个位置。当你在学校时,你真的不能期望学习流行的框架和架构 - 你在那里学习计算机科学理论以及如何编程。希望在工作期间你可以花时间学习Spring,Hibernate等,但如果没有,你需要花一些时间独自完成。
如果这些框架对您来说是新手,我建议您阅读一本有条不紊和“类似教程”学习的书,而不是随机谷歌搜索或尝试阅读参考文档。我肯定会为Hibernate做这件事。这就是我最初学习流行的J2EE堆栈的方法,但现在我可以阅读框架附带的文档。
无论如何,您将开始发现所有J2EE技术都有些相关,并且您将在学习特定技术时学习其他相关技术。例如,学习JSF与JSP携手并进。
答案 15 :(得分:1)
现实检查:作为一名进入劳动力市场的新毕业生,您将经历与我们其他人一样的过程。你进入的生态学与你多年来学到的生态学完全不同。无论你从事什么工作并且好雇主都理解它,就会有一个学习曲线。
快速解决您的问题:
你如何学习新技术?
阅读,练习,犯错,重复。此过程中最有价值的产品将是特定的问题,您可以向新同事询问(以及Stack Overflow)。记住,提出好问题实际上会让你看起来更聪明。提出一般性的问题或“我不明白”只会让你烦恼....
什么方法最适合学习多种技术 同一时间?
列出您需要学习的事项的优先列表,然后处理列表。你无法在一个周末学习所有的网络商务。但是,您可以在下午了解Hibernate的特定方面。使用IDE手动阅读新的代码库,并开始探索实际使用的API。如果您只关注所有这些新工具的相关要点,您实际上可能会发现自己的进度比预期的要快。
答案 16 :(得分:1)
答案 17 :(得分:0)
找一位你尊敬的导师,并照他们的意愿去做。
作为一名年轻的CS毕业生,我很幸运能够与一位非常有经验的建筑师联系。现在,您需要了解有经验的建筑师,他们(我们)是懒惰的。他们(我们)会让你从他们的盘子里拿出很多东西,让你这么做,然后告诉你为什么这是错的。如果可以,请利用这个过程。
答案 18 :(得分:0)
我在学习新技术或技术时所做的一件事就是编写一个小的示例应用程序。 Hibernate,Spring MVC和Maven有很多很好的教程。关键是要限制你一次尝试的东西的数量 - 例如,如果你专注于Maven而不将Spring和Hibernate混合在一起,那么找出Maven会更容易。一旦你对一件事情感到满意,你就可以开始另一个微型项目了。
有导师也有帮助。你会发现自己需要有人与之交谈的情况(技术和非技术)。不要害怕向与你合作的更有经验的人寻求建议。
答案 19 :(得分:-1)