JAVA程序员需要掌握什么知识?
作为一个合格的Java软件工程师必须具备的条件?
这个问题是我一直想知道的。但是它又分为很多个方面...
比如,是掌握具体的技术,
还是,拥有很强的自学能力?
现在的软件方面跟新和升级特别快,
无论是什么知识,当你真正掌握它的时候,也许就已经被淘汰了。
所以这就要求我们不停的去学习...
所以自学能力很重要.
但是我觉得自控能力更重要...(悲哀...今天看了一天动画...)
我自认为是没有什么自控能力的人...
好了,再来说说技术方面。
到底现在该掌握些什么具体的知识呢?
这里,我真羡慕.net程序员...
从头到尾就一个.net framework(.net框架),
这样就可以很集中精力去深入学习它,而且不用担心会被淘汰...
而Java这边,洽洽相反框架满天飞,而且各有所长...
这就难免让人需要经历选择性的痛苦...(虽然原理都差不多)
而且还要根据公司的不同而使用不同的组合...
这就产生了n种集成方案...(崩溃啊...)
所以要全部学会几乎不可能啊...
虽然是这样,但是有点挑战性才有意思嘛...呵呵...
那么一个合格的java软件工程师究竟需要掌握哪些具体的知识呢?
下面就我个人的角度来总结一下,如有不足,也请高手指出。
(ps:本人只列出普遍常用的知识)
首先当然是Java语言本身了。Java语言的创始人曾说过"Java=C++--"。
什么意思?就是Java语言是在C++的基础上减去一些不必要的东西,使其更为实用,更具有生产力。
Java语言的语法很简单并不像C++那样复杂.(本人曾经接触过C++...伤心的经历...)
很多较为复杂的数据结构Java都能简单实现,而C++较为麻烦。
其中很大的原因是因为Java是单根结构.
而且Java的垃圾回收机制也有很大的功劳.(.net的垃圾回收机制也是Java的灵感)
但是如果想深入底层了解Java还是需要费很大的功夫的...
比如,你要学会javap命令去反编译java文件然后再去看懂那些反编译后的结果...
这样你才能了解Java语言的原理。
很多情况下不同的代码,但是最后产生的字节码是相同的。
也有些情况,虽然代码只相差一点但是效率是天壤之别。
(例如JDK5新添加的StringBuilder和StringBuffer的区别)
这些在都可以反映在字节码里。
关于Java语言的问题不是本文的重点,我就不多说了。
总之学好Java这门语言是基础中的基础。
其次,说到Java语言就不能不说面向对象(OO)。
Java语言的产生也有很大的一部分是为了生成一个具有生产力的OO语言。
为什么这样说?
在早些年代OO的思想虽然被提出,但是那些纯粹的OO语言却没有丝毫的生产力。
(如出名的:smalltalk它是100%的OO)
而Java在保持高度的OO的前提下更注重生产力。
(ps:Java是98%的OO,其中8种基本数据类型,static关键字,运算符等,这些都不OO)
所以随着软件工程的庞大OO的思想很重要。
好了,到这里如果以上你有所了解,并掌握的一般。那么就可以继续往下学习:
如果你想掌握Java语言中更精髓的东西,那么我建议你可以做一些小的桌面应用程序。
其中,你会学习到另一些知识:
并发,IO,GUI,AWT,Event,Listener,Socket,Reflect等java更深层的东西。
(当然,有些只需了解,因为有些东西将来在做B/S结构的系统上是用不到的...
如果将来你想从事嵌入式开发,这些你就要多一点了解了。
很可惜,我还没有想过去做那个...
还记得当我第一次了解AWT里的Event和Listener的实现方式后,
我觉得JDK的设计人员真是厉害,设计的是那么的巧妙,第一次感觉代码是那么优美,
里面用到了各种设计模式,真是让人惊讶。
遭了,又在自我陶醉了...)
回到正题,关于Java语言的基础,我就先讲到这。
当我们掌握了Java之后呢?
真正的Java开发现在才是开始:
这时我们必须要接触另外一样东西,
没错,那就是数据库!
数据库的重要性就不用我在这里强调了吧?
无论你学习什么技术,数据库都是必备品。
作为Java程序员,我们不是DBA,我们没有必要掌握太多的数据库的管理知识。
我们只要知道如何连接数据库进行访问和CRUD操作,并对一些地方提高效率就可以了。
如创建索引和适当的使用存储过程即可。
首先,学习什么样的数据库呢?
没办法,多了解一点吧...毕竟每个公司用的都不一样...
目前的4大主流数据库是必须要学习的:
DB2(IBM号称世界上用的最广泛的数据库,不过近些年已被MySQL慢慢侵蚀掉了.但是很多的大公司在用,毕竟是IBM啊。)
SQLServer(当年凭借SQLServer2000获得很大成功,由于和Microsoft的产品兼容很好,所以很受欢迎。)
MySQL(真正的轻量级啊...而且是低端的主流开源数据库,使用量已经超越DB2。)
Oracle("甲骨文","神谕","圣贤","哲人"...光是对Oracle这个单词的翻译就可以看出它多么拥有实力。不过大的有点夸张...)
好了,如果你已经会简单的使用上面的数据库了,那么就继续往下吧:
既然要访问数据库,那就离不开JDBC!
JDBC相信大家都知道,它只是一组接口,然后由不同的数据库厂家去实现,
这样用JDBC访问数据库的时候方法其实都是一样的,这里我就不多说了。
另外JDBC是将来ORM的底层实现,学习好了它,对ORM框架的实现就更为清楚原理。
下面重点要说说SQL语句。
SQL有2套标准(82和99),我不太确定...记得不太清楚了...
现在的数据库基本这2种都支持。
但是问题来了,不同的数据库,又对其改变了一点...
这是最令人头痛的...
也就是说,4种数据库,你就要记住4种SQL的区别是什么,虽然大体差不多,但是还是要区分开来的。
而且不同的数据库,对SQL语句又有不同的优化。
也就是同样的SQL语句在不同的数据库上执行的效率不同。
所以SQL语句也是一门必修之路啊...
而且不要看似简单,其实要想写出一条高效率的SQL语句很难啊...
尤其是在复杂的多表联合查询中,这种效率问题一定要考虑。
另外,最烦人的莫过于数据库程序设计。
每种数据库有自己的语法。如SQLServer里的T-SQL,Oracle里的PLSQL等...
使用这些语言编写触发器,存储过程等...自我感觉是最头疼的...而且用的不多...
了解一下就好...
好了,当学习完数据库.我们就可学习web开发了.
所谓的web开发,就是基于浏览器/服务器(B/S)的开发。
那么既然是在浏览器上跑的程序那么就离不开HTML、CSS、JavaScript、DOM等网页技术。
所以下一步就是学习HTML,HTML应该是最简单的标记语言.很容易就能学会。
根据web2.0的标准,XHTML将是规范。
所谓的XHTML其实和HTML4.0的规范差不多,就是标签的要求更加严厉了。
学习HTML的同时还要一起学习CSS,这个东西说简单,也简单,说难也难。就看你个人了。
但是毕竟我们不是美工,只要了解就好了。(有时我就在界面上消耗了很多时间...郁闷...)
JavaScript我个人建议还是要稍微花点功夫研究一下的...
毕竟后面涉及到Ajax和用户体验等方面需要用到它...
它是一门客户端脚本语言,即:浏览器解释执行。
是一种弱类型语言,但是研究起来还是很深奥的...
至于DOM本人还没有花时间研究过,不敢轻易下结论.
当完基本的网页技术后,就可以进入正题,Java在internet上的应用就从这里开始:
前面学习了网页技术后,我们就可以做出简单的静态网站。(即:没有与数据库交互.)
静态网站由后缀名为.html或.htm结尾。
但是静态网站是毫无用处的,所以我们要开发动态网站。
最古老的技术就是CGI(通用网关接口).
它根据浏览器端的http请求激活响应进程,每一个请求对应一个进程。(注意不是线程,是进程!)
当同时有很多请求时,程序挤占系统资源,造成效率低下。
目前流行的动态网页技术有:ASP、JSP、PHP、ASP.NET等...
这里我就不一一介绍他们了。关于他们的对比,网上比比皆是.
而今天的主角就是JSP!
JSP是什么?说白了就是在HTML里嵌入服务器端可执行的Java代码。
这里的Java代码和前面所说的Java代码是一样的。
这里要注意的是jsp最终会转换成servlet。
所以学好Jsp就要先学习servlet。
与applet对应,servlet顾名思义就是服务器端脚本。
这里是学习的重点。
其他的也没什么好讲的。
这里要掌握几个概念:servlet容器,IDE,taglib,DAO,MVC等...
servlet容器,就是解释执行servlet代码的地方。
IDE,前面我都没有提过,也就是因为前面的学习都很简单,并不需要IDE的支持。
而接下来的开发会比较复杂,文件数量的增多和管理会很麻烦,而且很多的API不可能都背下来。
所以这里就是使用IDE的时候了...至于用什么IDE本人觉得无所谓...
(我用的是最普遍的Eclipse,当然你也可以用NetBeans6.0以上版本.我觉得也很不错。)
taglib,这里用的比较少,以后学习框架用的比较多.
DAO,很重要。它的实现方式多种多样,值得研究。
MVC,很重要。但是重在理解,理解为什么要用MVC。
最后关于Http协议,Servlet容器里的线程池的实现等...
这些如果你有能力和时间就去看看...没有什么坏处...
学到这里,可能中间你会用到另一门技术XML!
作为java程序员来说,我觉的只要了解XML原理就可以了。
不可能还让你去写scherma或DTD的...
所以我们只要学习读写XML就可以了...(JDOM或DOM4J)
下面在来简单的说说ajax...
当你程序要求你在不刷新页面的情况下读取数据并显示,这是就是ajax的勇武之地.
如果你之前的javascript没有学的特别的牢固,也没什么关系,用框架吧。
所谓的ajax框架就是一个javascript的库。它简化并对javascript封装。
常见的ajax库有很多,这可以根据情况自己选择学习。
(dojo、prototype、jquery、dwr、ext等...)
等学习到了这里,你已经可以独立的开发一个简单的网站了。
但是,这里有很多的问题:
1.代码量大
2.开发时间长
3.系统扩展性差
4.虽然用MVC分层,但是JSP+Servlet+JDBC这种开发方式难以维护。(尤其是JSP里有大量代码,像ASP那样)
5.理论上不OO
6.效率低
7.安全性低
等等...
短短一时间我就能想到这么多的不足,证明这离企业级开发还有很大的差距.
那么正真的企业级应用是什么呢?
JavaEE的本质就是为了企业级开发...
可惜,至今还未能领悟JavaEE的核心思想...
但从技术角度,JavaEE拥有哪些技术呢?
貌似太多太多...EJB是JavaEE的核心思想...感觉有点类似.Net框架...即:一个框架包含所有功能.
可惜一直没时间学习过EJB...
所以我下面要讲的是如何针对上面的不足加以改进?
1.代码量大就造成"开发周期的延长"。而且自己写的代码有时会有漏洞,或效率上的问题。(如果你不是专家的话)
所以要解决这个问题就要引入"框架".
如果引入了框架,那么有些问题就可以迎刃而解。
1.代码量的减少。
2.开发周期的缩短。
3.效率提高一点。
4.安全性提搞了一点。
毕竟人家是顶尖的专业人士,写出来的代码肯定比自己写的健壮又高效。对吗?而且又可以减少代码量。
框架分很多种,就像上面的ajax框架一样,它也是一种框架。
下面就列出一些流行的框架:
MVC框架:Struts1.x,Struts2.x,JSF,webwork等...其中最令我期待的是struts2.
ORM框架:Hibernate3,Ibatis,jpa等...其中最令我期待的是JPA.
AOP框架:Spring2.5 貌似现在只流行这个...AspectJ都没人提...
至于EJB里的,我不太了解...
但是至少上面的是主流.如果遇到非主流...也就算我倒霉...再学呗...
至于系统扩展性和维护性差是系统架构的设计问题.
这个问题不是我在这里一句两句就能表达清楚的。
(前些日子搞了个泛型DAO模式,都研究了很久)
UML和design pattern是需要经验的...
在学习这些框架的过程中会有很多意想不到的事情发生...
再深入学习就是webservice和分布式了...
感觉我还没有触及到那个层次...
还差的远呢...不过慢慢来吧...
今天说了那么多就是想知道做为一个java软件工程师.到底需要哪些技术?
我很需要自我反思...
可能我今天说的都只是皮毛,也有很多欠考虑的地方...希望朋友指出...
也可以给我意见...
也许我看问题不全面,或是有偏见,也欢迎指出。
先去买哪本书了解一下吧,你不可能指望网上得到详细的教学,网上都是粘贴复制。。。java相对还是好学的,你不需要了解太多的电脑知识,你只用了解下java开发和运行平台,会安装和设置他们,和java本身的语法和组件的用法即可。。。买本书他会告诉你怎么做,我不会java,我会C#.net(微软模仿java平台,自己做的一个.net开发和运行平台,基本原理相似,用法不同,没java火)。。。。
如果你是计算机系的,还是应该注重学校的课程的,就算你不能精通,也至少应该知道他讲的是啥,因为有一天你会用到,甚至可能天天用,比如数据库,数据结构什么的。。。
学校将的你应该去实践一下,不要说你没电脑???你只要用了,其实相当简单的,一通百通,刚开始可能很困难,只看书永远看不明白,指望老师教会,这就是不可能的事。。。
1. Java编程的知识和技能、JEE体系的知识
2 .数据库的基本知识,包括Oracle和SqlServer和MySql
3.Web开发的知识和技能
4.EJB组件开发的知识和技能
5.流行的Struts、Spring、Hibernate、Webwork、Ibatis开发框架
6.实用的Ant、Xdoclet、Log4j、Junit、Vss、Cvs等开发工具
7.工作流技术和实用的Shark、JBPM等工作流框架
8.搜索引擎技术和实用的Lucene等搜索引擎框架
9.WebService技术和SOA架构
10.AJAX技术和Dwr框架
11.UML软件工程的知识
12.Java的设计模式,JEE的设计模式和JEE应用程序框架设计
13.好的编程思想和素质,IT学习的方法和技能
14.众多开发工具的使用,开发平台和环境的配置
15.完整的JEE项目开发经验和技能
显示基础吧,吧基础的吃透之后,要在实际的项目经验中才能真正的学习一些东西
javaSE+Html+css(了解)+js+jsp+serlvet+jdbc+SSH2 其他的边工作边学
JAVA架构师哪个机构专业?都学些什么内容呢?就业岗位有哪些?
java是一种面向对象的语言,所以要深入学习面向对象的分析与设计,另外还要学习UML统一建模语言。10、接下来就是系统设计与架构 这里要学习的是Java设计模式、EJB设计模式、JEE核心设计模式、JEE应用程序框架设计。11、软件工程 软件工程基本理论知识的学习,还有Rup和极限编程。12、技术研究 学习搜索引擎技术...
java自学要多久
java自学最快也要半年左右。ava是一门面向对象的高级编程语言,不仅吸收了C语言的各种优点,还摒弃了C里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。Java具有...
Java培训出来,好找工作吗?
好找工作,现在的JAVA工程师需求还是很大的。相关信息 Java可以用来编写网站,现在很多大型网站都用Jsp写的,JSP全名Java Server Pages它是一种动态网页技术,比如我们熟悉的163,一些政府网站都是采用JSP编写的。所以学习Java的同学可以找开发网站方面的工作,而且现在找这方面的岗位比较多。一般编程语言都可以...
Java的就业前景怎么样?
没有想过几天后,就有面试了,但是第一次面试我失败了,虽然我自认为笔试很好,因为我之前做了准备,但是他们的要求比价严格,需要有一年的项目经验,所以我没有被选中。 后来陆续面试了几加公司,终于功夫不负有心人,我终于面试上了一家民营的企业。公司规模比较小,我的职务是Java程序员。我想我...
JAVA是什么软件?主要是干什么用的?
Java是一种高级语言,就是用来编程的,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。Java具有简单性、面向对象、...
学java能做什么工作
1、安卓Apps 如果你想知道Java应用在哪里,你离答案并不远。打开你的安卓手机或者任何的App,它们完全是用有着谷歌AndroidAPI的Java编程语言编写的,这个API和JDK非常相似。前几年安卓刚开始起步而到今日已经很多Java程序员是安卓App的开发者。2、在金融服务行业的服务器应用 Java在金融服务业有着很大应用...
怎么可以成长为C++ or Java程序员???
怎么可以成长为C++ or Java程序员??? 我很喜欢做程序的工作,但我现在没有做程序工作,因为感觉现在做个程序员,还不够格,也找过这方面的,实习的机会都没有,只能先找个自己能干的先干着,然后自学。现在学C,C++,也比... 我很喜欢做程序的工作,但我现在没有做程序工作,因为感觉现在做个程序员,还不够格,也...
java和javaweb和web的区别
Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,而是引用。并提供了自动的废料收集,使得程序员不必为内存管理而担忧。Java...
零基础学习Java编程报java培训班有用吗?
现在许多应届大学生都会面临这样一种状况,大多数企业都是招有经验的员工,对于应届毕业生的招收是非常少的,这在IT行业尤其是java程序员是比较突出的。因此,我们发现许多应届毕业生往往选择就业培训,那么对于他们来说,零基础参加java培训好不好呢?首先许多大学生都会抱怨,大学没有学到什么实用技能,...
JAVA是什么意思?
21.class类 object类中的getclass方法返回ckass类型的一个实例,程序启动时包含在main方法的类会被加载,虚拟机要加载他需要的所有类,每一个加载的类都要加载它需要的类。 22.class类为编写可动态操纵java代码的程序提供了强大的功能反射,这项功能为JavaBeans特别有用,使用反射Java能支持VB程序员习惯使用的工具。
稻阎银得: 1、语法:Java程序员必须比较熟悉语法,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息 知道是什么样的语法错误并且知道任何修正. 2、命令:必须...
藁城市17237454780: Java程序员都需要学习什么? - ?
稻阎银得: 首先要学习一下几点:1、熟练使用一种 IDE.Intellij IDEA或者 Eclipse 都可以.至少熟悉常用的快捷键,会 debug(包括远程 debug)项目.2、熟悉一种编辑器.比如 Vim/Emacs/Sublime Text,至少学会搜索/替换/代码补全.掌握 Java.经典...
藁城市17237454780: 要当Java工程师,需要掌握什么技能??
稻阎银得: 想学好Java需要你有一定的英语基础,如果你本身英语好那么学起Java来会更容易.如果你英语很差那么需要你先多多练习英语,因为Java的代码口令都是英文的,所以你需要将常用的口令代码背熟.如果英语不好还不愿意死记硬背,那么用Java编程都是个问题.其次零基础学习Java想入门首先要学习一些JavaEE基础知识,比如:Java基础语、面向对象、核心类库、集合、异常、IO、线程、JDK新特性等知识点.学好基础知识,把基础打牢再继续学习会简单很多.
藁城市17237454780: java程序员需要掌握哪些基本的技能 - ?
稻阎银得: 面对即将来临的毕业季,又一批学生开始了自己的找工作生涯.工作很多,但真正符合自己意愿的是真的少,外加上现在很多公司对应聘者的要求越来越高,使得我们想要得到一份自己满意的工作,必须将自己打磨好.对于Java程序员来说,技...
藁城市17237454780: 要当Java工程师要掌握什么技能? - ?
稻阎银得: Java是一种编程语言主要用于后端开发,Java工程师主要做的工作就是运用Java语言去完成软件产品的软件程序设计、开发、测试、维护升级等工作.想要成为Java工程师完成这些工作则需要学习一定的Java技术.想做好Java的工作首先Java...
藁城市17237454780: 一个优秀的Java程序员需要学习哪些知识 - ?
稻阎银得: 怎样成为一名程序员 通过以下4个阶段的训练, 没有任何编程基础人就可以成为一名普通的程序员. 第一阶段:掌握一种编程语言 学习内容:学习任意一种主流的编程语言.例如c++语言. 学习目标:熟练掌握一种语言的语法和基本的编程技...
藁城市17237454780: 一个java程序员要具备什么样的知识 - ?
稻阎银得: 熟练掌握:Java基础,Jsp,Mysql,SQL Server,Servlet,Javabean 熟练掌握:Struts,Hibernate,Spring,Ajax常用开源框架 熟练掌握:EL表达式,JSTL标签,XML,,DOM使用,C语言 熟 悉:Dreamweaver,Photoshop,Css 样式的使用 简单使用:Linux,C# 等等 这是我的简历...我在找工作...就这样还是不够做一个JAVA程序员...更多的是工作经验....祝楼主早日成功!
藁城市17237454780: 初学者学习 java 都需要掌握哪些知识.?
稻阎银得: 基本上初学者学到这个程度就可以去找工作了!第一部分:JavaSE:Java语言最基本的一套库学习JavaEE或JavaME之前,JavaSE是必学的.* Java开发环境搭建* Java基础语法* 面向对象* 数组* 异常* 集合* 线程* IO流* 反射机制* 注解...
藁城市17237454780: JAVA程序员需要掌握哪些知识点? - ?
稻阎银得: 1,java基本语法一定要熟悉.2,要有面向对象的思想,软件工程知识,再最少一种大型数据库最好oracle.3,再就要看你想从事那方面java开发了,根据兴趣再学习j2me,j2ee.
藁城市17237454780: 我想做一个java程序员,我应该学哪些知识??
稻阎银得: Java程序员是用Java语言做软件开发的.鉴于目前web应用程序比较火,一般会从事J2EE开发. 做为Java程序员应该会的一些知识包括面向对象的知识(Java是面向对象语言,自然少不了要了解面向对象的思想),Java中一些最基本的类的使用.会用Java做简单的c/s结构的应用程序.了解JSP、Servlet和JavaBean以及MVC设计模式.知道一些最游行的框架技术,如ssh等.基本上知道了这些之后,离合格的Java程序员也就不远了.