求指点 想学好JAVA但不知先学什么?再?

关于现在的情况:在学校里学了两年JAVA,但感觉什么也知道,但又懂点基本的东西
会做spring+hibernate/ibaits+struts2/struts1的简单的增删改查,但不懂这些框架的内部实现原理,没看过源码
现在上班了,用的是spring+struts1+hibernate,模仿着已有的项目学着做,会做出来,但感觉都是简单的东西,复杂的么只能百度google或问别人
现在想真正学好JAVA,但又迷茫不知从哪学起,逛着各个JAVA技术类的论坛,很多都不会:
1 数据结构与算法
2 各种各样的设计模式
3 各种各样的框架,我只会一些中的最简单的,别人说看源码, 但又不知道怎么看源码? 从何看起?
4 数据库,比如oracle数据库的基本操作,基本优化知识
5 像dwr,ajax的JS框架,会些简单的应用,又要学
6 其它很多不知道的东西,如ejb,web service,很多很多

我应该从哪开始学起呢

如何学呢?比如学框架,但我发现我自己都看不懂~

或者怎样安排学的先后顺序和时间呢

现在自己对各种框架的认识:最基础的知识+运用基础知识的方法=框架 但我感觉最基础知识也很多看不懂,平常很多基础书中基本上没讲过
能推荐一些关于我上面这种情况学的书么, 不胜谢谢~

个人认为你需要增加一些较大规模项目的经验。
从那里你能得到的唯一东西就是“感觉”。
这个东西是很虚,但是也是基础,就和种子一样。

因为很多框架,技术其实都是教你如何管理代码。
你如果没有经过大量的需要管理的代码的折磨,就不明白这些东西对你有什么用。

尤其是ejb之类的,你根本就觉得他是累赘。

所以想要学东西,就要先受折磨。打个比方吧,想知道面包有啥用?
饱的时候不知道,饿一天立马知道。

楼上点明的是学习方法,我也是那种方法过来的。至于有没有更好的,自己多点交流吧。

不过既然是过来人就总得让新人少走弯路。

首先,要纠正观点:“最基础的知识+运用基础知识的方法=框架”,框架是上层和下层的粘合剂,并不能单靠基础知识来完成,它是一个复杂的工具。它目的在于加快项目开发效率。

关于那6项:
1、这项单从软件开发方面(准确说OO软件设计开发,下同),是不作为基础的,但学了也不错的,可以帮助理解(这就是所谓“跳出来”),千万别用过程思想去思考软件的设计哦,你会发现是一件费力不讨好的事情。

2、设计模式,可以说是软件开发的基础,但千万别跟JAVA等同起来,它只是一种思想,还有,它远远不止23种,23种是这基础的基础而已。

3、设计模式都还没掌握,就先不要去看框架了,框架这东西对应起来就是架构师,架构师需要大量的思想和经验的,别想一下子登天了o(︶︿︶)o 。

4、数据库属于技术层面的,研究它就等同于走软件应用,并不是软件开发。软件开发只需去认识和了解就行(了解就是了解应用面和如何服务于开发)。

5、需要学点,若果你定位自己是搞页面设计,那就需要学精,但搞业务方面的设计(领域设计),并不十分需求,懂一点拿来展示就行。

6、不知道的东西多着呢,“路漫漫其修远兮”,把自己定位好,向着一个方向努力学,其他方向,需要时学学就行,JAVA所带给我们的思想财富,一辈子也学不完的,千万别什么都学,而什么都不精。不过还是需要多方面了解。

时间安排这个得看自己,每个人不相同,努力全面认真就行。

多上网的话,其实可以不买书,要买也是买《设计模式》,有时蹲厕所时看看,毕竟网上资料不是一本书可以比拟的。想进步更快的话,多实践,多思考,多讨论···差不多吧
以上