究竟是Java好还是嵌入式好?

好工作可以让人轻松过上好生活,就像IT 行业,年薪20万的岗位比比皆是,但是,IT行业岗位多如牛毛,如何选择成了一个世纪难题,有人说JAVA好,编程语言里面排第一,用的最多,工作岗位也多。有人说嵌入式好,由于物联网也人工智能的发展,嵌入式未来势必会成为超级热门,选择Java好还是嵌入式好?下面我们就来了解一下IT技术领域中Java开发与嵌入式开发的特点、现状及未来。

Java开发的应用及特点

Java是Sun Microsystems公司1995年推出的一种面向对象的程序设计语言,应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网方面的应用软件编程,Java方向开发需要计算机软件基础、数据库原理、SQLserver、C++程序设计、java核心编程、linux、websphere 开发工具、DB2数据库、ERWin数据库建模、UML、ratioanlrose建模、OM软件开发生命周期、J2EEOM企业级开发、基于MVC的struts框架技术、软件测试工具与方法等,主要是基于PC机、linux等操作系统之上的应用软件开发,对于硬件电路是完全不懂,主要就是做一些界面、QQ、游戏等上位机应用软件。

Java在中国发展已10几年时间,虽然所学的内容较多,但入门较容易,初中、高中、中专基础的都能学习,但是有发展瓶颈,就是上升空间不大,且生命周期比较短(大概有7年左右的时间),感觉做几年之后没什么可做的了,做java(应用软件)开发的35岁以上的基本很少了,就是常说的“吃青春饭”,且软件更新快,工作比较忙。

嵌入式的应用领域、现状及未来趋势

随着科技进步,嵌入式的出现,以及人们对生活质量,产品的智能化,成本的要求等,以及国家对与物联网、电子、科技的扶持,大量的电子产品都促使嵌入式的快速发展。使用嵌入式的产品如我们常用的手机、平板电脑、电子字典、可视电话、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、物联网、智能家居、医疗仪器、航天航空设备等都是典型的嵌入式的应用。

嵌入式系统市场是巨大的,市场需求是嵌入式系统产业化发展的巨大推动力,据报告:10%~20%的计算机芯片是位台式或便携式电脑设计,80%~90%的计算机芯片是位嵌入式产品设计的,这意味着每年有10亿至20亿个CPU是为嵌入式产品制造的,市场决定了嵌入式行业是很有发展前途的行业。

嵌入式工作分类

嵌入式产品开发是基于产品的功能,从功能需求、提出并选择方案、电路设计、PCB电路板设计、软件设计、样机生产、软硬件综合调试,软硬件结合的产品开发。所以嵌入式开发需要软硬件都懂的基础要求。但根据侧重点的不同嵌入式产品开发工作可以有以下分类:

硬件方面:

1、电路设计:产品原理图的设计,需要对数电模电都比较精通,且熟悉单片机、arm架构及熟练外围电路的使用;基本上会电路设计的都会PCB设计。

2、PCB电路板的设计:需要熟悉数电、看懂常用模电,对单片机、arm外设了解,且具备安规电磁兼容的应用经验。

软件方面:

1、驱动开发:基于电路图实现产品的驱动开发,需要看懂电路,精通C语言,熟悉arm架构及外设的使用,熟悉操作系统内核、驱动。

2、系统开发:基于硬件的uboot移植、内核移植裁剪、根文件系统制作等系统环境搭建及驱动移植开发、应用测试等,需要精通C语言,看懂电路,linux系统开发。

3、应用开发:基于操作系统之上的应用程序开发,无需电路方面知识,只需要软件编程,需掌握Java或C++,操作系统、数据库、数据库建模、SQLserver、oracle等,应用开发更新比较快,像电脑上的软件QQ、360、游戏等软件,所以工作也比较忙,入门门槛低,但上升空间不大。

嵌入式系统开发及应用开发要求可能不会太高,相对入门比较简单,但系统开发所需掌握知识面还是比较广的,也比较有发展空间,应用开发更新快,发展有限。驱动开发需要有驱动开发经验,如果有开发经验的话,不会很忙,就是实现功能,如果一个产品功能实现了,就没有太多事了,剩余的就是应用开发了,驱动开发更新不会很快。

嵌入式产品开发中不同的工作有不同的一些特点,硬件开发靠经验,经验越丰富越吃香,可以说能做一辈子;软件开发靠思维、靠算法,如果编程思维清晰,算法优越,不需要太长时间就能做的相当不错。如果软硬件都能做,独立开发产品的话,身价更胜一筹。

但是对于入门级甚至初学者来说不可能面面俱到,都要去做,你也没这个能力,即使能做,一般公司也不会让你一个人从硬件到软件独立去开发嵌入式产品,因为公司做项目有时间要求,必须分工协作。

嵌入式的学习规划

嵌入式产品开发是需要软硬件结合,做软件需要能看懂电路,根据电路、功能即实现原理来编写程序,如果电路不懂,是不能编程实现其功能的,硬件开发也需要对芯片架构,外设编程使用比较熟悉,否则你设计出来的硬件不便于软件开发人员编程实现功能,或者你设计出来的硬件繁琐,成本很高。

那么如何学习嵌入式呢,对于想学习嵌入式的朋友们来说有很多都有单片机的学习经历,感觉自学就行,但是从现实情况来看,嵌入式学习还是比较有难度的,很多朋友遇到问题解决不了,学了一部分就学不下去了,嵌入式学习需要有它的学习方法以及发展规划,下面就来谈谈嵌入式的学习规划:

1、软件开发不需要太多经验积累,只要你做过一些开发,编程思维、算法好,不需要太长时间就能做好,所以首先可以做软件开发,比如系统开发或应用开发。

2、对系统比较熟悉,做过一些项目之后,可以朝底层驱动方面发展,这个工作也不会太忙,待遇也相当不错,做过一些项目之后对于电路见的也多了,电路也比较熟悉了。

3、有比较多项目经验之后,电路也熟悉了之后,补充一些硬件电路知识可以朝硬件设计方面发展,整个产品的开发过程都比较熟悉了之后就可以成为项目研发部的主管或经理,也可以自己接外快接项目来做,有管理经验的甚至可以自己开公司做老板,毕竟这方面的产品开发不需要投资太多成本。

对于初学者嵌入式的学习步骤

先打好两个基础:

电路基础:熟悉数字电路,能看懂电路,能分析功能,能根据电路编程

C语言基础:要学的精通,学得不好,上了系统程序看都看不懂。

掌握arm架构及其外设的使用,编程控制,做相应项目。

学习系统编程及网络编程,在应用程序中使用。

linux系统学习:uboot移植,内核移植、裁剪,根文件系统制作,驱动编写与移植(花比较大精力学习,它是系统的核心,也结合硬件),应用编程,用户界面等

先做系统编程或应用编程,有一定经验之后可向底层驱动发展;软件项目经验比较丰富之后可向硬件电路设计发展。

综合来说,纯应用开发(如Java)来说,门槛较低,但更新太快,发展空间有限,生命周期太短;而嵌入式开发是靠经验积累的,不用吃“青春饭”。

本文来自企鹅号 - 达内嵌入式培训媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏罗超频道

小程序上线在即,App不会死,但移动互联网却会变天

张小龙在2017微信公开课Pro上发布的小程序即将在1月9日正式上线。在张小龙发布小程序之后,有两家来自杭州的创业者称,它们的估值均上涨了10倍——吸引眼球的成...

3036
来自专栏互联网数据官iCDO

最佳移动应用程序分析解决方案

译者:池金锐 审校:李晓艳 本文长度为1447字,预估阅读时间5分钟。 引言:230个开发者和180万个apps案例向我们展示了什么是最好的移动应用程序分...

3718
来自专栏数据库新发现

云和恩墨数据库一体机助力天安人寿 zData架构高效运行

zData Light 是基于x86架构的高性能数据库服务器整体解决方案(一体机),基于自主研发的Light Storage 软件,将服务器、PCle闪存卡、...

2804
来自专栏疯狂的小程序

小程序火爆的因素

几天前,我重新翻阅了2017年5月写的一篇关于小程序的文章,文章虽青涩但还算精确,文中阐述了三个观点:

22810
来自专栏顾宇的研习笔记

从技术雷达看 DevOps 发展的 9 个趋势

DevOps 包含了太多方面的技术和实践,很难通过一个统一的工具链来描述其发展。即便如此,我们仍然可以从 ThoughtWorks 技术雷达的条目变动中看出一些...

1153
来自专栏Linux Python 加油站

面试 Linux 运维工作至少需要知道哪些知识?

作者:defcon来源:马哥教育链接:https://mp.weixin.qq.com/s/ZocozTkCNViMAtZIr7C7ww前言我们已经发过不少 L...

2382
来自专栏AI科技大本营的专栏

一场“正宗”的开发者大会,为什么说微软更像是“AII in AI”了?

如你所见,苹果的 WWDC、Google I/O 开发者大会或多或少都会连接普通消费者,大会期间会发布一些最新的电子消费产品,以引起更广泛人群的关注。

1143
来自专栏灯塔大数据

探秘 | 大数据创业真火,快看看这十家都是干啥的?

IDC预测,数据总量将从2016年的16.1ZB增长到2025年的163ZB。调研公司MarketsandMarkets预计,管理这些数据并让这些数据变得更有价...

2918
来自专栏云计算D1net

云计算:IT灵活性VS安全性

本期我们继续就云计算是否具有安全性展示正方与反方两种观点,希望因此引起商业机构管理者的足够重视。 正方观点一: 软硬件升级更自如 云提供商的任务是管理软硬件升级...

2915
来自专栏北京马哥教育

面试 Linux 运维工作至少需要知道哪些知识?

知乎上有这样一个问题:一个新手面试 Linux 运维工作至少需要知道哪些知识?其中有一个答案对这一话题的解读非常深入,今天特别分享给大家。

2190

扫码关注云+社区

领取腾讯云代金券