A job plays an important role in a person’s life, decisively affecting their quality of life. One could say that a job determines a person’s life. When choosing a job, it is essential to select an emerging industry with development prospects. In the field of IT technology, should one choose Java or Embedded Development? Let’s take a look at the characteristics, current status, and future of Java development and embedded development.
Applications and Characteristics of Java Development
Java is an object-oriented programming language launched by Sun Microsystems in 1995, used for application software programming in personal PCs, data centers, game consoles, scientific supercomputers, mobile phones, and the Internet. Java development requires a foundation in computer software, database principles, SQL server, C++ programming, core Java programming, Linux, WebSphere development tools, DB2 database, ERWin database modeling, UML, Rational Rose modeling, OM software development lifecycle, J2EE OM enterprise-level development, MVC-based Struts framework technology, software testing tools and methods, etc. It primarily focuses on application software development on operating systems such as PCs and Linux, with no understanding of hardware circuits, mainly working on interfaces, QQ, games, and other upper-level application software. Java has been developing in China for over ten years. Although the content learned is extensive, it is relatively easy to get started, and individuals with a middle school, high school, or vocational school background can learn it. However, there are development bottlenecks, as there is limited upward mobility and a relatively short lifecycle (about seven years). After a few years, there may not be much to do, and there are very few developers over 35 in Java (application software) development, commonly referred to as ‘eating youth food.’ Moreover, software updates quickly, leading to a busy work environment.
Application Fields, Current Status, and Future Trends of Embedded Systems
With technological advancements, the emergence of embedded systems, and people’s demands for quality of life, product intelligence, and cost, along with national support for the Internet of Things, electronics, and technology, a large number of electronic products have accelerated the rapid development of embedded systems. Products that use embedded systems include commonly used devices such as mobile phones, tablets, electronic dictionaries, visual phones, digital cameras (DC), digital video cameras (DV), U-disks, set-top boxes, high-definition televisions (HDTV), game consoles, smart toys, switches, routers, CNC equipment or instruments, automotive electronics, the Internet of Things, smart homes, medical instruments, aerospace equipment, etc., which are typical applications of embedded systems.
The embedded systems market is vast, and market demand is a significant driving force for the industrialization development of embedded systems. According to reports, 10% to 20% of computer chips are designed for desktop or portable computers, while 80% to 90% are designed for embedded products. This means that every year, 1 billion to 2 billion CPUs are manufactured for embedded products, indicating that the market determines that the embedded industry has significant development prospects.
Classification of Embedded Work:
Embedded product development is based on the product’s functions, from functional requirements, proposing and selecting solutions, circuit design, PCB circuit board design, software design, prototype production, to soft and hard integration debugging. Therefore, embedded development requires a foundational understanding of both software and hardware. However, depending on the focus, embedded product development can be classified into the following categories:
Hardware Aspects:
1. Circuit Design: Designing the product schematic requires proficiency in both digital and analog circuits and familiarity with microcontrollers, ARM architecture, and skilled use of peripheral circuits. Generally, those who can design circuits can also do PCB design.
2. PCB Circuit Board Design: Requires familiarity with digital circuits, the ability to read common analog circuits, understanding microcontroller and ARM peripherals, and experience with safety regulations and electromagnetic compatibility.
Software Aspects:
1. Driver Development: Implementing product driver development based on the circuit diagram requires understanding the circuit, proficiency in C language, familiarity with ARM architecture and peripherals, and knowledge of operating system kernels and drivers.
2. System Development: Building system environments and driver migration development based on hardware, such as U-Boot porting, kernel porting and trimming, and root file system creation, requires proficiency in C language, circuit understanding, and Linux system development.
3. Application Development: Application program development based on operating systems does not require circuit knowledge but requires software programming skills, mastery of Java or C++, operating systems, databases, database modeling, SQL server, Oracle, etc. Application development updates quickly, similar to software like QQ, 360, games, etc., leading to a busy work environment. The entry barrier is low, but there is limited upward mobility.
Embedded system development and application development requirements may not be too high, relatively simple to get started, but the knowledge required for system development is still quite broad, and there is considerable development space. Application development updates quickly, but development is limited. Driver development requires driver development experience. If you have development experience, it won’t be too busy; it’s just about implementing functions. Once a product’s functionality is achieved, there isn’t much left to do, and the rest is application development, while driver development does not update quickly.
Different jobs in embedded product development have various characteristics. Hardware development relies on experience; the more experienced you are, the more valuable you become, and you can say you can do it for a lifetime. Software development relies on thinking and algorithms; if your programming thinking is clear and your algorithms are superior, you can achieve significant results in a short time. If you can do both software and hardware and independently develop products, your value increases even more.
However, for beginners or even novices, it is impossible to cover everything. You don’t have that capability, and even if you can do it, most companies won’t let you independently develop embedded products from hardware to software because companies have time requirements for projects and must work collaboratively.
Learning Plan for Embedded Systems
Embedded product development requires a combination of software and hardware. To do software, you need to understand circuits and write programs based on the circuit and functional implementation principles. If you don’t understand circuits, you cannot program to achieve their functionality. Hardware development also requires familiarity with chip architecture and peripheral programming; otherwise, the hardware you design may not be convenient for software developers to program or may be overly complicated and costly.
So how to learn embedded systems? For those who want to learn embedded systems, many have experience with microcontroller learning and feel that self-study is sufficient. However, in reality, learning embedded systems is relatively challenging. Many friends encounter problems they cannot solve and cannot continue after learning part of the content. Learning embedded systems requires a specific learning method and development plan. Here are some embedded learning plans:
1. Software development does not require too much experience accumulation. As long as you have done some development and have good programming thinking and algorithms, you can do well in a short time. Therefore, you can start with software development, such as system or application development.
2. Once you are familiar with the system and have completed some projects, you can develop towards low-level driver aspects. This work won’t be too busy, and the compensation is quite good. After completing some projects, you will be more familiar with circuits.
3. After gaining considerable project experience and becoming familiar with circuits, supplementing some hardware circuit knowledge can lead to a focus on hardware design. Once you are familiar with the entire product development process, you can become a supervisor or manager in the project R&D department or take on freelance projects. Those with management experience can even start their own companies, as product development in this area does not require significant investment.
Learning Steps for Beginners in Embedded Systems:
Firstly, establish two foundations:
Circuit Foundation: Familiarize yourself with digital circuits, understand circuits, analyze functions, and program based on circuits.
C Language Foundation: Master it; if you don’t learn it well, you won’t understand system programs.
Master ARM architecture and peripheral usage, programming control, and work on corresponding projects.
Learn system programming and network programming for use in application programs.
Learn Linux systems: U-Boot porting, kernel porting and trimming, root file system creation, driver writing and porting (spend considerable effort learning this, as it is the core of the system and integrates with hardware), application programming, user interfaces, etc.
Start with system programming or application programming. After gaining some experience, you can develop towards low-level drivers; after accumulating rich software project experience, you can progress towards hardware circuit design.
In summary, pure application development (like Java) has a low threshold but updates too quickly, with limited development space and short lifecycles; while embedded development relies on experience accumulation, and one does not have to rely on ‘youth food.’
1.Attention Points for C Language in Embedded System Programming
2.Embedded Software Learning Roadmap!
3.Hard Links and Soft Links in Linux File Systems
4.For Embedded Systems, You Can Try Micro Bit!
5.How to Get Started in Artificial Intelligence with Poor Programming and Math Foundations?
6.Command Linking Operators in Linux to Make Your Code More Concise!
Disclaimer: This article is a network reprint, and copyright belongs to the original author. If there are copyright issues, please contact us, and we will confirm copyright based on the copyright certificate you provide and pay for the manuscript or delete the content.