Job Recruitment Website - Ranking of immigration countries - Web J2EE, embedded direction, give some advice. . .

Web J2EE, embedded direction, give some advice. . .

Net J2EE, the embedded direction is a slightly fashionable and pleasant term, which mainly refers to enterprise information systems, such as ERP software (enterprise resource planning), CRM software (customer relationship management), SCM software (supply chain management, namely logistics software), bank securities software, financial software, e-commerce/government affairs (including various websites), data warehouse, data mining, business intelligence and other enterprise information management systems.

Obviously, the demand for talents in the field of enterprise computing is always the greatest, because this is the field where computers are used the most. The advantages of this are:

(1) There is a great demand for talents, and companies engaged in enterprise computing account for the majority of IT enterprises. Unless you have no specialty, you can always find a job in this field.

(2) The entry threshold of this field is relatively low (if your software skills are not very deep, you can consider this field)

(3) There are many big companies in this field, and they want to make big money, so they spend more energy on enterprise computing business. For example, Citibank, Hewlett-Packard, IBM, SAP, NEC and other companies. At present, those who practice with our classmates belong to this field. If you want to find a relatively stable job in a big company in the future, you will have much greater opportunities to engage in this field.

But the shortcomings in this field are also obvious:

Because the entry threshold in this field is relatively low, although the demand for talents in this field is the largest, there will be more competitors in the future. You will find that even if he is not an IT major, he may still do a decent job after a few months of assault. Especially when you are old, you may find that the young people behind you may easily catch up with your level. If you are going to work abroad, you may find that there are more people engaged in this field, and they are like clouds. Of course, if you have many years of enterprise experience in this field (such as designing software architecture) and reach a higher level, your value will always be high. The main problem in the field of talents in China is that there are too few experienced experts and too many people with a little knowledge.

Engaged in the field of enterprise computing, the most important technical courses are (1)J2EE architecture and programming (2) large database systems (such as Oracle)(3) UML-based system analysis and design. If you have any important skills, you can also include XML and Web service technology. If you master these fields well, you won't worry about finding a job. Among them, J2EE is the most important. At present, J2EE has become the most important platform for enterprise computing software development and one of the most important courses in our college. Although this course can only be used as an elective course, we hope that no matter what direction students want to pursue in the future, they will study J2EE course and at least prepare a key skill for finding a job in the future. Including students who want to engage in embedded or other fields, it is also necessary to learn J2EE. After all, J2EE is one of the most important platforms at present. Even if you don't want to engage in enterprise computing in the future, it is necessary to know about J2EE, just like a common sense course. Other skills closely related to enterprise computing include: point network architecture and programming, software testing technology, and software configuration management. Advanced skills in this field include data warehouse technology, component and middleware technology and design patterns. Such as communication protocol analysis and network programming, Unix system management, etc. It also belongs to some related courses. There are not many enterprise computing courses offered in Grade 02 this semester, mainly the most critical technical courses in the field of enterprise computing, such as J2EE, Oracle/MSSQL, UML, etc. , have been completed (but I don't know how many students have studied in depth and will use these skills when looking for a job in the future). We will offer courses in this field next semester, such as XML and Web service technology, software configuration management and so on. There are not many courses in the field of enterprise computing this semester, but you should learn J2EE, DB, UML and other technologies in your spare time, and you must have a deep grasp in a certain field. Just a follower, even if there are more courses, it is useless. Learning by yourself is the most important thing. Only one J2EE is profound enough for you to savor. If you dig deeper, you will find that you still have a lot of related knowledge to learn (including EJB, XML, Web services, design patterns, etc. ).

Although there are many talents engaged in enterprise computing, the following enterprise computing fields are scarce at home and abroad:

(1) Master large-scale ERP systems, mainly SAP systems, including the realization of SAP foundation (system management) or SAP ABAP (programming) or SAP functional modules (especially the realization of financial module FI). SAP consultants are the most expensive and difficult to find. Other large-scale ERP systems, people who master PeopleSoft, Oracle Finacial, J.D.Edward, Siebel and other large-scale ERP software systems are also very valuable. The reason why people in this field are particularly expensive is mainly because these softwares are very professional and very large, so it is difficult to learn D version. Only very large enterprises (such as Fortune 500 enterprises, more than 90% of which use SAP) can afford it, and they must have practical work experience to master it. If it is a software that everyone can easily access, then people in this field are usually not scarce. If you have the opportunity to learn these large-scale ERP software systems in the future, I suggest you seize them without hesitation, which will bring golden rice bowls to the next generation. In foreign countries, people who know SAP are especially valuable. It is always an irrefutable truth that things are rare. The value of SAP is not only that it is an ERP software, but also that it embodies modern enterprise management concepts (such as automatically arranging raw material procurement and production planning according to ordering demand, etc.). ). Generally, the top 500 enterprises will never use J2EE to design their ERP system from scratch, as many domestic enterprises do (what kind of human resources will be invested immediately, and how can the designed system be perfect? ), you will definitely use mature ERP software like SAP. Companies that can't afford SAP can use J2EE to design ERP systems.

(2) People who master IBM mainframe technology, such as S/390 mainframe, MVS operating system, JCL job control language, COBOL programming language, DB2 relational database or IMS hierarchical database, CISC middleware transaction control system and other IBM mainframe-specific technologies. The back-office systems of the five major domestic banks and most foreign banks use the above platform. IBM mainframes are always on, and the platform is relatively closed (which is the safest), so these key applications (called mission-critical applications) that need to run continuously in a 24*7 environment all adopt IBM mainframes. The reason why talents in this field are scarce is because the people who know the host are the elderly (people who engaged in IT before the 1990s). IT is impossible for IT graduates all over the world to learn IBM mainframe (this is a relatively "old" technology), and there are no newcomers to make up for it. The banking system must be maintained, and banks must constantly develop new businesses (such as new types of deposits). Although the absolute demand for IBM mainframe talents is not great, it is relatively constant. Where can banks find new people in this field? It's hard to find them. If they are easy to find, Citi Software will not spend so much money to train our interns (it is said that the company spent hundreds of thousands of yuan on training last year). If you want to look for a job abroad, knowing IBM mainframe may be one of the best areas to find a job, and make sure to find a good job like a big bank. Students who have taught computer majors in Grade 90-94 before, who are engaged in mainframe development after graduation, are now working in some very good foreign companies (several students are jumping around in companies all over the world, keeping their feet on the ground). In fact, I think our happiest classmate is the one who works as IBM mainframe banking software in Citi Software, and the opportunity is rare. A student in Class 2+2, Grade 00, our college gave up the postgraduate entrance examination and decided to be a host in Citi Software, working very hard. He hasn't graduated. The company sent her abroad to participate in the development of a project and she became the backbone of the project. I think her original choice was completely correct (a female classmate in grade 0 1 just voluntarily gave up the opportunity to be a host in Citi, and we wish her a good future. In fact, there are not many enlightened companies that actively arrange and encourage employees to study in-service graduate students. On-the-job graduate students are also a good choice and will not lose their favorite internship opportunities. The ultimate goal of study is to work. If you look for a job abroad in the future, no one cares what diploma you have. Foreign companies will never waste money, but will only recruit people who have field work experience and can get started immediately. Complete the project in a limited time with the least money. In China, because of the low labor cost, the company has recruited many highly educated talents. Although it may not be used at all, the domestic manpower is too cheap. Why not spend more money on talents? This will make the facade of the company look better.

(3) Few other people in China have mastered data warehouse technology. At present, the most mainstream data warehouse platform should be ORACLE's data warehouse tool. In foreign countries, people who know some special data warehouses, such as NCR/TEREDATA, are hard to find.

Our classmates are all very young now. Young people are full of enthusiasm and like to chase after some hot technologies. This is of course correct. After all, there are not many opportunities to learn SAP and mainframe. It is important to find a job before graduation. But I believe that with the growth of age, everyone will gradually think about the importance of mastering a stunt and less competitors in the future. In the future, if you work abroad, what skills are the best to find a job (it is easiest for people who engage in software to work abroad or emigrate, maybe you don't want to now, but I believe that a large number of students may want to travel abroad after working for many years), you should consider your future life, what kind of stunts are the most stable, the easiest and the highest income. People who engage in software, when they are older, may be more inclined to live by experience and eat by experience like medical people. You don't have to chase the emerging new software technology all day like young people. At this time, you may find that if you have some stunts in SAP or mainframe, you will have great advantages, because the technological changes in these relatively partial fields are relatively slow.

I still remember that in 2000, I cooperated with a German and interviewed some IT talents to go to Germany in their spare time. At that time, many demands of German companies came from mainframes of SAP and IBM. We didn't find any experience in this field among many applicants, or even no experience at all. On the contrary, people who have mastered popular technology are not very valuable because there are too many.

The above views on the field of enterprise computing are for your reference. Although they may be incorrect, they are outspoken. In short, everyone's head is on his neck, and everyone should have his own judgment.

It majors in foreign universities can generally find basic courses such as engineering, compilation, digital circuits, computer graphics, computer composition and architecture. If you have studied in China, you can generally apply for exemption from some courses when studying abroad. But I also want to remind students that if you have to find a job if you don't apply to a foreign university after graduation in the future, it is not easy to find a job if you just spend your energy on the basic courses of these IT majors (traditional IT education mode) without mastering some skilled technologies like J2EE. Some of our classmates have learned this lesson. From the perspective of looking for a job, what enterprises care about is not what courses you have studied, but what you can do, what skills you have and what projects you can do.

Second, the development direction of embedded system

Embedded system is undoubtedly one of the hottest and most promising IT application fields. Embedded system is used in some special equipment. Usually, the hardware resources of these devices (such as processor, memory, etc.). ) are very limited, and are sensitive to cost, sometimes demanding real-time response. Especially with the intelligentization of consumer appliances, embedded is more important. Such as mobile phone, PDA, electronic dictionary, videophone, VCD/DVD/MP3 player, digital camera (DC), digital video camera (DV), USB flash drive, set-top box, high definition television (HDTV), game machine, intelligent toy, switch, router, numerical control equipment or instrument, automotive electronics, home appliance control system, medical care.

Embedded system is a combination of software and hardware, and there are two kinds of people engaged in embedded development.

One is hardware major, such as electronic engineering and communication engineering. They are mainly engaged in hardware design, and sometimes they have to develop some underlying software that is most closely related to hardware, such as BootLoader, board support package (like PC BIOS, which drives hardware down and supports operating system up), and the most elementary hardware driver. Their advantage is that they are very clear about hardware principles, but their disadvantage is that they are better at defining various hardware interfaces, but they often cannot cope with complex software systems (such as embedded operating system principles and complex application software).

The other kind is software and computer professionals, who are mainly engaged in the development of embedded operating systems and application software. If we software learners have a good grasp of hardware principles and interfaces, we can also write BSP and hardware drivers. After the embedded hardware is designed, all kinds of functions are realized by software, and the value-added of embedded equipment depends largely on embedded software, which accounts for the most important work of embedded system (at present, many companies have given the hardware design package to specialized hardware companies, and the slightly more complicated hardware is designed by companies in Taiwan Province Province or abroad, so the domestic hardware design strength is very weak, and many embedded companies are only responsible for developing their own software. Because they all know that the difference between embedded products is largely in software, which is the most "fancy"), so we who engage in software don't have to worry about our position in the embedded market at all. The more intelligent devices and complex systems, the more important the key software, which is the current trend.

The advantages of engaging in embedded software development are:

(1) At present, people in this field are scarce at home and abroad. On the one hand, IT is difficult for non-professional IT personnel to enter this field, because the entry threshold of this field is very high, and they should not only understand the underlying software (such as operating system-level and driver-level software), but also have higher requirements for the professional level of software (embedded systems require higher space-time efficiency in software design) and understand the working principle of hardware. On the other hand, because this field is relatively new and developing too fast, many software and hardware technologies (such as ARM processor, embedded operating system, MPEG technology, wireless communication protocol, etc. It hasn't appeared for a long time, and people who master these new technologies are of course hard to find. Embedded talents are scarce, and their value is naturally high. The more experienced they are, the higher their price will be. In fact, embedded talents are scarce, and the fundamental reason may be that most people have unconditional contact, which requires corresponding embedded development boards and software, as well as experienced people to guide the development process.

(2) Different from application software such as enterprise computing, the work intensity of talents in embedded field is usually low (but their income is not low). For IT enterprises that engage in enterprise application software, once the system of this user is completed, it is necessary to engage in the next user. The needs and completion time of each user should be changed according to the requirements of customers, which is often tiring and repetitive. In contrast, companies engaged in embedded systems have their own product plans and act at their own pace. The developed products are generally universal and will not be modified by different customers. After a product model is developed, there will often be a long period of free time (or just some minor repairs to the software) and time to recharge. In addition, the work scope of embedded software is relatively narrow, and the professional technical scope involved is those (ARM, RTOS, MPEG, 802. 1 1, etc. After a long time, these things will become more and more experienced, and they will sell used books. A few instructions will be enough for those novices to ponder for half a year. If you are engaged in application software, maybe the next customer will change to a completely different software development platform, which will be bitter.

(3) If one day you want to start a business and make your own products, then embedding is a good idea, which is not as easy to be pirated as application software. Qixing, a company in the School of Civil Engineering, has developed a handheld PDA called "Project E" (there is an advertisement in front of the south campus). Construction technicians can use this PDA to carry out civil engineering calculations such as civil engineering budget estimation on site, which is said to sell well. I know a university teacher who developed a PDA(WinCE platform, which can access the Internet wirelessly) for restaurants. According to him, it sells well and restaurants can let customers click on PDA to order food, which is more fashionable. I remember that a group of students in Class 2+2 of Grade 00 designed a powerful menu system with VC++ as a course item when they were studying Windows programming course. At that time, I really wanted to suggest that they make this software into a PDA, which is estimated to have some sales (McDonald's in the south square of Shanghai Railway Station uses a beautiful PDA to order food for users, just like a decent one). The hardware design of these PDAs is usually customized by other companies (this is called "OEM"), and they are all common hardware. We just design software and become our own products.

The disadvantages of engaging in embedded software development are:

(1) has a high starting point, and the technology used is often difficult. If the software and hardware foundation is not good, especially the operating system-level software foundation is not deep, it may not be suitable for this trip.

(2) The number of enterprises in this field is far less than that of enterprise computing enterprises. In particular, there are many embedded small enterprises (small enterprises have to make their own products) and few well-known large companies (embedded large companies mainly include Intel, Motorola, TI, Philips, Samsung, Sony, Futjtum, Bell-Alcatel, stmicroelectronics, Zhongjing, Advantech, Huawei, ZTE, SVA and other manufacturing enterprises). The habitual way of thinking of these enterprises is to find hard professionals such as electronics and communications. Because the previous graduates of our college were mainly enterprise computing, our college had relatively little contact with these enterprises. Our college is making active efforts, and has established contact with its central branch at present, so as to strive for our students' internship or employment in these enterprises in the future.

(3) A few companies often require people with master's degree or above to engage in embedded technology, mainly based on the difficulty of embedded technology. But most companies don't have this requirement, as long as they have experience.

If students in our college study embedded systems, they should obviously focus on embedded software, especially embedded operating systems, which should be our strong point. For people engaged in embedded software, the most important technology is obviously (in fact, it is written in the recruitment advertisements of many companies):

(1) Master the structure and principle of mainstream embedded microprocessors.

(2) Must master the embedded operating system.

(3) Must be familiar with the development process of embedded software and have done at least one embedded software project.

The most important embedded software courses in our college include:

(1) embedded microprocessor structure and application: this is a basic course of embedded hardware, which has been used to replace the traditional course of "microcomputer principle and interface" in our college (at present, a few it majors in domestic universities are doing it, because it is difficult to find practical use to talk about x86 microcomputer principle and interface, just for teaching). As we said, embedded software is a combination of hardware and software, and people engaged in embedded software should have a full understanding of the working principle and interface technology of ARM processors, including the assembly instruction system of ARM. If you don't understand the principle of the processor, how to control the hardware work, how to write the code that saves the most memory and runs at high speed (embedded software design pays special attention to space-time efficiency), and how to write the driver (drivers are all dealing with hardware)? Many companies require familiarity with ARM processors when recruiting embedded software personnel. In the future, if students come to the company to develop embedded software, the company will give you a hardware specification (xxx specification) of the equipment. You must be able to understand the most basic instructions (like x86 assembly), otherwise how to design software. Some students think the embedded processor course is boring, mainly because the hardware course is abstract. After our embedded laboratory was built in June+10, 5438, you will feel tangible after doing some experiments. Some students are not interested in ARM assembly, and think that C language is enough for embedded development. In fact, we should not just regard assembly language as a programming language, but learn assembly mainly to master the working principle of the processor. How can a person unfamiliar with assembly language write the best C code on this processor? In some key parts of embedded development, it is sometimes necessary to write an assembly, such as Bootloader (and possibly BSP). Especially in high-speed situations (such as high-speed image acquisition and image decompression with DSP processor), at present, we mainly rely on sinks to write programs (I see many companies do this). Working in an embedded company and reading manuals describing principles, many of them may be described by assembly (I have also met them). This is because many hardware designers can only write or like to describe with assembly. At this time, you must know the assembler, otherwise the software and hardware personnel may not be able to communicate. Many embedded positions require familiarity with assembly when recruiting.

[Tips] At present, the common embedded processors are ARM, PowerPC, MIPS, Motorola 68K, ColdFire, etc. , but ARM is the absolute mainstream (it is said that almost 100% of mobile phones are ARM processors). ARM is a company that only sells intellectual property rights. At present, many large companies have obtained licenses to buy ARM CPU cores, including Intel, Samsung, Amstel, Motorola and Philips. They all made some peripheral extensions on the basis of ARM CPU core to form their own processors (such as Samsung S3C24 10, Motorola i.MXL9328, etc.). ) all adopt ARM 9 kernel, and the instruction level is the same. Many small and medium-sized companies have purchased these processors and designed various development boards. For example, many famous embedded companies in China, such as Huaheng, produce development boards based on Samsung S3C24 10 for end users or for teaching experiments. In the food chain of ARM, ARM is the big fish, Intel, Samsung and other companies are the small fish, Huaheng and others are the shrimp, and the end users (thinking that we want to purchase embedded development boards) feed the shrimp. In the early days, Intel produced low-end ARM (strong ARM, equivalent to ARM 7), but now it mainly produces high-end ARM (namely Intel Xscale processor, equivalent to ARM 10, mainly used in high-end PDA. For example, the PDA produced by HP and Dell uses Intel Xscale, which is expensive). At present, the most widely used processors are ARM 7 and ARM 9. ARM 7 is cheaper and can run real-time operating systems such as uclinux (an embedded linux system that does not support advanced memory management functions), Vxworks and uc/os II. However, because the processor has no memory management unit MMU (no memory paging and address mapping mechanism, so it can't use virtual memory), it can't run Windows CE, and some memory management functions in general Linux can't be used on ARM 7. ARM 9 is a high-end processor with MMU function, which can run most functions of WinCE or general Linux. The above is my little understanding, and there may be mistakes. The embedded laboratory under construction in our hospital (delivered at the end of June/0/0) includes 30 sets of ARM 7 system (Samsung S3C44b0x development board is planned to be used for embedded processor structure and embedded linux course experiment) and 10 set of ARM 9 system (Samsung S3C24 10x development board is planned to be used for Windows CE course construction).

(2) embedded operating system course

Except WinCE, most embedded operating systems are very real-time, so they can also be called real-time operating systems. People engaged in embedded systems must master at least one embedded operating system (of course, it is better to master two), which is the most critical of all embedded technologies. At present, the most important RTOS mainly includes:

The first category, traditional classic RTOS: the most important is Vxworks operating system and its Tornado development platform. Because Vxworks appeared earlier, it has strong real-time performance (it is said that it can respond to external event requests within 1ms), and the kernel can be extremely small (it is said that it can be as small as 8K) with high reliability, so in North America, Vxworks occupies more than half of embedded systems. Especially in systems with high real-time requirements such as communication equipment, almost none other than Vxworks. Many concepts and technologies of Vxworks are similar to those of Linux, mainly C language development. Vxworks is widely used by Bell-Alcatel, Lucent, Huawei and other communication companies when developing products. But because of the high price, Vxworks can't be used in some small companies or products. At present, many companies are switching to embedded Linux (I heard that Huawei is doing the same at present). But in any case, Vxworks will not waver for a long time. Similar to Vxworks, there are RTOS such as pSOS, QNX, Nucleus and so on.