如何掌握Java?

Abu*_*mad 27 java

我在Java学习了2门课程:
1-使用Java编程简介.
2-使用Java的数据结构.

在这两门课程中,我们使用了Java SE.

我喜欢它,我真的想成为一名优秀的java程序员.

但是,我发现我应该知道Java软件开发中涉及的许多技术:
Spring,Struts,JSP,JSF,GWT,Hibernate,apache tomcat以及其他更多技术.

我希望它变成像.NET这样简单的过程你选择一种语言,一个框架和IDE就是它.

有人可以指导我找到掌握Java的最佳途径或途径吗?
您如何看待这两门课程:
http://www.oreillyschool.com/certificates/java-programming.php

高级Java证书系列(来自同一所学校,将于9月开放).

Rei*_*aka 44

我认为大多数程序员都有大概的大学毕业生情报,包括我自己.我们所做的很多就是耐心.

也就是说,有有效的学习方法和低效的学习方式.

  • 如果您坚持使用一本教程/书籍,请尝试另一本书.一旦完成了基础知识,就没有"正确"的学习顺序.
  • 浏览标准Java库文档.不要费心记住它,但要确保在需要时知道工具在那里.
  • 制作大量的测试程序.如果你对某些事情感到好奇,那就试试看看会发生什么.不知道int有多大?编写一个打印出sizeof的程序.不知道在调用覆盖实例的虚函数时会发生什么?编写一个包含两个类的程序,一个继承另一个类,然后尝试一下.
  • 阅读其他人的代码.注意风格和结构.我并不是说愚蠢的事情,比如{应该与声明一致,但它们如何回收变量,如何组织他们的类,他们如何使用循环,他们在哪里优化以及他们不在哪里等.模仿你喜欢的.
  • 练习构建"存根"程序 - 一旦掌握了它,你就可以在脑中做到这一点.找到你最喜欢的程序,并写出你认为用于构建它的所有类/方法.这对你的建筑有所帮助.
  • 花很多时间来命名你的课程.不要使用花哨的名字,只是描述性的.考虑名称是一种很好的心理练习,即使您不希望共享您的代码.
  • 试试Project Euler,如果你遇到那种非常粗糙的东西.我不相信编程是关于数学的,但你可能会喜欢它.
  • 有时候学习C语言.如果你正在使用Java,C++可能不值得,但C会教你如何运行你的计算机.你不需要掌握它,但至少要达到理解内存管理和指针的程度.当您希望代码非常快时,这将帮助您更快地做出决策.
  • 有一天学习函数式编程.Haskell是一个很好的选择,因为它是一种纯粹的功能语言.一开始这是非常困难的,但无论你编写什么语言,你从中学到的概念都很有价值.你将更快地做出设计决策,而且你的代码会更加健壮.
  • 保持最新.这个行业的趋势和时尚行业一样快.很多都是废话,但很多对就业和生产力都至关重要.要时刻注意,否则你会走恐龙之路.

  • *"我们所做的很多就是耐心."* - 的确,如果你没有耐心,那么专业编程对你来说不是一个好职业. (5认同)

Jam*_*uld 13

成为擅长某事的最好方法是什么?实践,实践,实践.

不要只关注单个框架,只需要做大量的Java,查看开源项目,找到需要修复或实现的东西,然后去做或者想一些你想要但不存在的东西.

  • 我能说什么?我练过;) (14认同)
  • 开源是获得大量优秀Java实践的好方法.它会让你看到其他人的代码,通常会有一组核心开发人员愿意指出你的错误. (2认同)

duf*_*ymo 12

实践并不完美 - 完美的练习是完美的.如果你继续犯同样的错误,你只会成功养成坏习惯.

你需要阅读这个.

您的Java路线图应该如下所示:

  1. 专注于核心Java JDK类开始.在熟悉接口,类和基础知识之前,不要担心Java EE.JDBC是核心Java的重要组成部分,因此可以流利使用它.您必须了解关系数据库,规范化和SQL.这里的GUI技术是Swing.
  2. 完成之后,请使用servlet,使用JSTL独占编写的JSP(无scriptlet)和JDBC.您必须了解有关Tomcat(或其他servlet/JSP引擎),HTTP,HTML,CSS和一些JavaScript的内容.你可以用这些方法走很长的路.
  3. 一旦你掌握了1和2,你就必须选择框架.我建议吞咽Spring或EJB 3整体.我首先推荐Spring,但我承认我不熟悉EJB 3.


Der*_*urk 7

我从你的问题的措辞中得到的印象是Java是你的第一个编程语言.我赞美你对"掌握Java"的渴望,但如果可能的话,我想建议你在深入了解之前尝试一点广度!

我认为,通过CS学位,大多数课程都是用Java教授,很容易陷入相信所有编程语言都是:

  • 面向对象(以及单实现继承和多接口继承)
  • 静态类型(没有类型推断)
  • 命令式(即利用迭代结构和可变状态)
  • 详细

因此,所有编程必须看起来大致像Java编程.

我谦虚地建议对不同的范例和语言进行一些阅读:学习动态类型语言(来自Java,我建议使用Python或Ruby),学习非OO语言(如C)---并实现OO,学习函数式编程(Haskell是一个令人大开眼界的人).在潜水之前先至少先看看Java字母汤(Java文化高度重视首字母缩略词---但我在这里不会对此作出任何价值判断).

只需我的0.02美元!