一个合格的JAVA工程师要掌握哪些技术,掌握到啥程度?(回答最好具体一点技术,程度,以及学习的方法)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个合格的JAVA工程师要掌握哪些技术,掌握到啥程度?(回答最好具体一点技术,程度,以及学习的方法)相关的知识,希望对你有一定的参考价值。
没有那么多学术的说法,只凭工作这些年的经验告诉你一些我的心得吧。1、规范:编写的代码必须符合流行的编码规范,例如类名首字母大写,成员和方法名首字母小写,方法名的第一个单词一般是动词,包名全部小写等,这样程序的可读性才比较好。
2、JDK:必须熟悉JDK(Java Development Kit,Java开发工具箱——JDK 是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。JDK是学好Java的第一步。)
3、测试:自己写的程序首先是能够通过自己的测试。
4、语法:必须比较熟悉,在写代码的时候,IDE(Integrated Development Environment,集成开发环境)的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误,并且知道任何修正。
5、排错:应该可以根据异常信息比较快速的定位问题的原因和大致位置。
6、思想:必须掌握OOP(Object Oriented Programming,面向对象编程)的主要要求,这样使用Java开发的系统才能是真正的Java系统。
7、工具:必须至少熟练使用一种IDE的开发工具,例如Eclipse、Netbeans、JBuilder、Jdeveloper、IDEA、JCreator或者Workshop,包括进行工程管理、常用选项的设置、插件的安装配置以及进行调试。
8、API(Application Programming Interface,应用程序编程接口):Java的核心API是非常庞大的,但是有一些内容笔者认为是必须熟悉的,否则不可能熟练的运用Java,包括:
java.lang包下的80%以上的类的功能的灵活运用。
java.util包下的80%以上的类的灵活运用,特别是集合类体系、规则表达式、zip、以及时间、随机数、属性、资源和Timer.
java.io包下的60%以上的类的使用,理解IO体系的基于管道模型的设计思路以及常用IO类的特性和使用场合。
java.math包下的100%的内容。
java.net包下的60%以上的内容,对各个类的功能比较熟悉。
java.text包下的60%以上的内容,特别是各种格式化类。
熟练运用JDBC. 80%、java.security包下40%以上的内容,如果对于安全没有接触的话根本就不可能掌握java.
AWT的基本内容,包括各种组件事件、监听器、布局管理器、常用组件、打印。
Swing的基本内容,和AWT的要求类似。
XML处理,熟悉SAX、DOM以及JDOM的优缺点并且能够使用其中的一种完成XML的解析及内容处理。
9、博学:掌握J2EE 、Oracle 、WebLogic、Jboss、Spring、Struts、Hibernate 等流行技术,掌握软件架构设计思想、搜索引擎优化、缓存系统设计、网站负载均衡、系统性能调优等实用技术。
10、管理:必须熟悉使用Ant(中文译为蚂蚁,是一种基于Java的build工具。)完成工程管理的常用任务,例如工程编译、生成javadoc、生成jar、版本控制、自动测试。
总结一下:做到前八点,就是个合格的java程序员了,9、10点就可以算是进阶了。
至于学习方法,没什么捷径,多做,多碰到错误,多改正,积累经验,不论是什么语言,都只是工具吧,核心是编程思想,是日积月累的经验。
希望对你有帮助。 参考技术A 自己总结的一些东西,希望能够帮助到你。
1、熟练的使用Java语言进行面向对象程序设计,有良好的编程习惯,熟悉常用的JavaAPI,包括I/O(NIO)、Socket、JDBC、XML、集合框架、多线程(并发编程)、反射等。
2、熟悉基于JSP和Servlet的JavaWeb开发,熟练的使用JSTL和EL编写无脚本动态页面,对Servlet和JSP的工作原理和生命周期有深入了解,有使用监听器、过滤器等Web组件以及MVC架构模式进行JavaWeb项目开发经验。
3、对Spring的IoC容器和AOP原理有深入了解,熟练的使用Spring进行事务、日志、安全性等的管理,熟练的运用Spring框架管理各种Web组件及其依赖关系,有使用SpringMVC作为表示层技术以及使用Spring提供的持久化支持进行Web项目开发的经验,熟悉Spring对其他框架的整合。
4、熟悉Hibernate和MyBatis的核心API,熟练的使用Hibernate、MyBatis等ORM框架,对Hibernate的关联映射、继承映射、组件映射、缓存机制、事务管理以及性能调优等有深入的理解。
5、熟练的使用html、CSS和javascript进行Web前端开发,熟悉jQuery和Bootstrap,有使用前端MVC框架(AngularJS)和JavaScript模板引擎(HandleBars)进行项目开发的经验,对Ajax技术在Web项目中的应用有深入理解。
6、熟练的使用SQL和PL/SQL进行数据库编程,熟悉常用的关系型数据库产品(mysql、Oracle)。
7、熟悉面向对象的设计原则,熟练的使用UML进行面向对象的分析和设计,有TDD(测试驱动开发)和DDD(领域驱动设计)的经验,对GoF设计模式和企业应用架构模式有深入的了解和实际开发的相关经验。
8、熟悉Apache、nginx、Tomcat、WildFly、Weblogic等Web服务器和应用服务器的使用,熟悉多种服务器整合、集群和负载均衡的配置。
9、熟练的使用产品原型工具Axure,熟练的使用设计建模工具PowerDesigner和EnterpriseArchitect,熟练的使用Java开发环境Eclipse和IntelliJ,熟练的使用前端开发环境WebStorm,熟练的使用软件版本控制工具SVN和Git,熟练的使用项目构建和管理工具Maven和Gradle。说明:上面罗列的这些东西并不是每一项你都要烂熟于心,根据企业招聘的具体要求可以做相应的有针对性的准备。但是前6项应该是最低要求,是作为一个Java软件工程师必须要具备的专业技能。 参考技术B 1. java基础知识 ,非常熟悉,慢慢理解知识点,理解,运行
2 . 分支技能,比如j2ee 你肯定要知道 jsp servlet ssh框架 参考技术C 其实这个东西除了语言层面的东西,剩下的就是你所要做的类型应用架构所需要的东西,Web和GUI应用的当然不一样,况且还有移动等编程方向,再具体就是具体的业务领域知识和模型了。 参考技术D JavaSE JavaWEB SQL 3大框架等等,还可以学习下android就业也不错 学好的话还是多写代码,从抄代码开始,慢慢理解,发散
2021年,作为一名合格的Java后端开发程序员,必须掌握哪些框架?
前言
做了十多年的Java开发,和大家介绍一下我最近一两年用的比较多的Java框架(包括软件、中间件)。
Spring:从刚开始工作的时候就在用;是一个J2EE框架,提供了对IOC的良好支持,也提供了对AOP技术非常好的封装;
Spring MVC:也是Spring的一个子项目,实现了MVC设计模式,目标是解耦;
MyBatis、Hibernate:两个都是ORM框架,现在Hibernate用的少了;也有用到Spring Data JPA,这个可以看做是更高级的封装,可以通过方法的命名,实现SQL语句;
具体用什么框架跟项目规模和大小有很大的关系,下面从单体应用架构和微服务架构两个方面讲一下。
一、单体应用架构
单体应用架构比较简单,普遍用到就是五大框架,包括mvc层、持久层等。由于这五大框架是web开发框架学习的基础,相对于微服务框架比较简单,在此简单介绍一下。
1.Spring:ioc容器和bean管理,解决的是业务逻辑层和其他各层的松耦合问题,也起到纽带和桥梁的作用。
2.Springmvc:目前使用最普遍和最流行的mvc框架。
3.Struts2:也是一款类似于Springmvc功能的mvc框架,它的前身struts1基本没人使用了。struts2相较于springmvc有诸多劣势,包括自身漏洞门问题,慢慢走向没落。现在使用的大部分都是维护的老项目老系统。
4.hibernate:重量级的面向对象的持久层框架,其实它的功能非常强大,由于其自身功能的强大在使用和配置上比较复杂,很多程序员待之以鄙夷。hibernate用于中小系统项目还是很合适的,开发效率较高。
5.mybatis:是一款中低量级别的半自动的持久层框架,由于自身使用的灵活性和易于aql调优,目前还是非常流行的,很多大型项目都用到它。
可以看到,上面就是SSM框架,现在还是比较流行的,这里小编也对应整理了一份 Spring全家桶 1187页的学习笔记,分享给到大家。
- Maven:新老项目都是基于Maven构建,它是一个项目管理工具,主要功能有:项目构建;Jar包的依赖管理;版本管理;持续集成等等等等;
- JUint:单元测试工具;也是老朋友了;测试框架还有不少,比如Spring Test,JMock等等。
- Shiro、Spring Security:关于安全认证的框架,用于用户身份认证,权限授权、加密、会话管理等;
- Cxf or Axis:老项目WebService用的比较多一些;历史问题,还是要了解一下;
- Quartz:定时服务框架,一般都是单机应用;
- Elastic-job:分布式定时服务框架,当当出品;
- log4j、logback:各种日志工具;现在会有一些日志采集分析的框架,比如ELK;
- Ehcache:缓存框架,也都是用于单机项目;
- Redis:说道缓存,现在更多的使用Memcached、Redis;当然Redis也不局限于缓存;
- Spring Boot:用于搞定其他框架的一个框架,主要是提供了各种启动器、简化了各种配置、方便和其他框架集成、开发者能够快速上手。
- Dubbo:一个微服务框架,阿里出品;
- Spring Cloud:另外一套微服务框架,这个就多了,例如:Config(配置管理中心)、Netflix Eureka(服务注册、服务发现)、Hystrix(断路器,这个官方好像已经不建议使用了,又有新的了)、Feign(声明式服务调用组件)、Ribbon(客户端负载均衡)、Zuul(网关)、Bus(消息总线)等等。
二、微服务架构
微服务架构相对于单体应用架构复杂些,尤其是微服务架构用到分布式应用架构就更为复杂。
1.springboot:
微服务基础框架,由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
特点 :
-
创建独立的Spring应用程序
-
嵌入的Tomcat,无需部署WAR文件
-
简化Maven配置
-
自动配置Spring
-
提供生产就绪型功能,如指标,健康检查和外部配置
-
绝对没有代码生成和对XML没有要求配置。一句话总结:使用springboot可以高效快速开发web应用,而且可以不使用单体应用开发框架中那些繁杂的xml配置。
2.Dubbo:
Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者与消费者的方式在dubbo上注册)
其核心部分包含:
-
远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。
-
集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
-
自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。
3.SpringCloud:用官方文档的说明:
Spring Cloud为开发人员提供了快速构建分布式系统中的一些通用模式(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式 会话,群集状态)。
分布式系统的协调导致了锅炉板模式,并且使用Spring Cloud开发人员可以快速地站起来实现这些模式的服务和应用程序。 它们可以在任何分布式环境中正常工作,包括开发人员自己的笔记本电脑,裸机数据中心和受管平台,如Cloud Foundry。
自己项目中用的比较多的技术,不仅仅是框架,有下列这些:
1,spring:低侵入式对象管理容器,提供大量注解,方便开发,声明式事务,集成别的框架变得简单!
2,springboot:微服务框架,大量现成库的集合,提供样板化的配置和开发,简化初始构建和开发!
3,springcloud:企业级的微服务框架,集成了大量微服务所需要的并能直接使用的库,比如服务注册与发现,jvm运行参数获取,安全认证,断流器等等!
4,mybatis:持久层框架,轻量级,使sql和代码得到解耦,支持动态sql,所以能支持强大复杂的sql语句,查询结果可与JAVA对象自动映射!
5,druid:连接池,可对sql执行次数,效率等进行监控,可对web请求数等进行监控,提供可视化页面!
6,redis:key-value内存型缓存,可支持多种数据结构的存取,单线程保证线程安全,可用于业务数据加锁,计数,生成全局唯一key,设计秒杀系统等等!
7,docker:微服务持续集成部署的容器首选,占用资源少,可构建一套独立的环境镜像,避免各种环境复杂性的影响!windows可下载boot2docker体验,非常好用!
8,mycat:分库分表框架,有多种分库分表策略以供选择,简单配置即可获得优秀的数据库超量数据读写!
9,mysql:开源关系型数据库,性能强大!
10,mongodb:非关系型数据库,热数据存储在内存中,读取非常快速,文档式存储(大对象尤为方便),支持自动分片!
11,AOP:面向切面编程,可将非业务的公共部分抽出,比如日志,安全验证等等!
12,logback:日志工具,简单配置即可获取全面的日志打印,和日志文件管理!
13,jenkins:持续集成部署工具,通过简单配置,可实现自动部署!
14,ons,rabbitMq等消息组件:异步处理,最终一致性解决方案!
15,nginx:负载均衡的不二之选,极为稳定,性能极好,配置简单,有多种均衡方式可供选择,可轻松实现前端跨域访问!
16,SVN/git:版本控制工具,是团队并行开发的保障!
17,putty/secureCRT:远程连接工具,方便对远程执行命令,查看日志等!
18,javamelody:集成在代码中,可以网页上查看实时内存,CPU使用率等等性能监控指标!jmap:性能分析工具!
Dubbo or Spring Cloud:这个看公司的技术栈,用到哪个学哪个,都没有用到,建议学Spring Cloud。
- Restful API、RPC:不同风格的服务;
- Swagger:Restful API自动生成工具;
- 消息队列:常用RabbitMQ和Kafka,一种保存消息的容器,也用于系统间解耦;
- MongoDB:BSON(类似JSON)格式的内存数据库;
- Zookeeper:一个分布式协调服务;
- Nginx:或其他负载均衡软件;
- Docker:容器技术。
以上就是我在工作中,最常用的JAVA开发相关的框架,技术,工具等!
有什么好的学习经验可以在评论区提出来,大家一起分享讨论
以上是关于一个合格的JAVA工程师要掌握哪些技术,掌握到啥程度?(回答最好具体一点技术,程度,以及学习的方法)的主要内容,如果未能解决你的问题,请参考以下文章
一个中级java工程师应该掌握哪些知识?有啥途径去获取这些知识?
2021年,作为一名合格的Java后端开发程序员,必须掌握哪些框架?