Joke Collection Website - Mood Talk - What knowledge do JAVA programmers need to master?

What knowledge do JAVA programmers need to master?

let me give you a reference.

what are the requirements for being a qualified Java software engineer?

this question is what I've always wanted to know. But it is divided into many aspects ...

For example, is it to master specific technology,

or is it to have strong self-learning ability?

Nowadays, the innovation and upgrade of software are very fast.

No matter what knowledge you have, when you really master it, it may have been eliminated.

So this requires us to keep learning ...

So self-study ability is very important.

But I think self-control ability is more important ... (Sadly ... I watched animation all day today ...)

I think I am a person with no self-control ability ...

Well, let's talk about technology again.

what specific knowledge should we master now?

Here, I really envy. net programmers ...

There is a. NET Framework from beginning to end,

So that you can concentrate on studying it deeply and don't worry about being eliminated ...

On the Java side, qiaqia's opposite framework is flying everywhere. And each has its own strengths ...

It is inevitable that people will java to experience selective pain ... (although the principles are similar)

And different combinations will be used according to different companies ...

This gives rise to n kinds of integration schemes ... (collapse ...)

So it is almost impossible to learn them all ...

Although it is, it is a bit challenging and interesting.

Let's summarize it from my personal point of view. If there are any shortcomings, please point them out.

(ps: I only list commonly used knowledge)

First of all, of course, the Java language itself. The founder of the Java language once said "Java = C++-".

what do you mean? That is, the Java language subtracts some unnecessary things from C++ to make it more practical and productive.

The syntax of Java language is very simple and not as complicated as C++. (I have been exposed to C++ ... a sad experience ...)

Many complicated data structures can be simply implemented in Java, but C++ is more troublesome.

The main reason is that java is a single root structure.

And Java's garbage collection mechanism also contributes a lot. (The garbage collection mechanism of. net is also the inspiration of Java)

But it still takes a lot of effort if you want to understand Java at the bottom ...

For example, you should learn javap commands to decompile Java files and then understand the decompiled results ...

In many cases, there are different codes, but the resulting bytecode is the same.

in some cases, although the code is only a little different, the efficiency is very different.

(for example, the difference between StringBuilder and StringBuffer newly added by JDK5)

All these can be reflected in bytecode.

the question about Java language is not the focus of this article, so I won't say more.

in short, learning the language Java well is the foundation of the foundation.

secondly, object-oriented (OO) is indispensable when it comes to Java language.

the p>Java language is also produced in large part to generate a productive OO language.

why do you say that?

although the idea of OO was put forward in the early years, those pure OO languages were not productive at all.

(such as the famous: smalltalk, which is 1% OO)

Java pays more attention to productivity while maintaining a high degree of OO.

(ps:Java is 98% OO, including 8 basic data types, static keywords, operators, etc., which are not OO)

So with the huge software engineering, the idea of OO is very important.

well, here if you know something about the above, and have a general grasp. Then you can continue to learn:

If you want to master the essence of the Java language, then I suggest you make some small desktop applications.

Among them, you will learn some other knowledge:

Concurrency, IO, GUI, AWT, Event, Listener, Socket, Reflect and other deeper things in java.

(Of course, some things just need to be understood, because some things will not be needed in the system with B/S structure in the future ...

If you want to engage in embedded development in the future, you need to know more about these things.

It's a pity that I haven't thought about doing that in the past ...

I still remember that when I first learned about the implementation of Event and Listener in AWT,

I thought the designers of JDK were really amazing, and the design was so ingenious. It was amazing that the code was so beautiful for the first time.

Various design patterns were used in it.

Oh, I'm narcissistic again ...)

Back to the topic, I'll stop here about the basics of the Java language.

what happens when we master Java?

The real Java development is just the beginning:

At this time, we have to touch another thing,

Yes, that's the database!

I don't need to emphasize the importance of the database here, do I?

no matter what technology you study, the database is a must.

As Java programmers, we are not DBA, so we don't need to master too much knowledge of database management.

We just need to know how to connect the database for access and CRUD operation, and improve the efficiency in some places.

just create indexes and use stored procedures appropriately.

first of all, what kind of database should I study?

No way, learn more ... After all, each company uses different databases ...

At present, four major databases must be learned:

DB2(IBM claims to be the most widely used database in the world, but it has been gradually eroded by MySQL in recent years. But many big companies are using it, after all, it is IBM. )

SQLServer (SQLServer2 was a great success in that year, and it was very popular because of its good compatibility with Microsoft products. )

MySQL (really lightweight ... and it is a low-end mainstream open source database, and its usage has surpassed DB2. )

Oracle ("Oracle Bone Inscriptions", "Oracle", "Sage", "Philosopher" ... Just by translating the word Oracle, we can see how powerful it is. But the big one is a bit exaggerated ...)

Well, if you can already use the above database simply, then go on:

Since you want to access the database, you can't do without JDBC!

JDBC, as we all know, is just a set of interfaces, which are then implemented by different database manufacturers.

In this way, the methods of accessing the database with JDBC are actually the same, so I won't say much here.

In addition, JDBC is the underlying implementation of ORM in the future. After learning it well, the realization principle of ORM framework will be clearer.

the following focuses on SQL statements.

SQL has two sets of standards (82 and 99). I'm not sure ... I don't remember clearly ...

Now the database basically supports both.

But here comes the problem. Different databases have changed it a little bit ...

This is the most headache ...

That is to say, you have to remember the differences between the four SQL databases. Although they are almost the same, you still have to distinguish them.

and different databases have different optimizations for SQL statements.

that is to say, the efficiency of executing the same SQL statement on different databases is different.

So SQL statement is also a compulsory road ...

And it should not seem simple. In fact, it is very difficult to write an efficient SQL statement ...

Especially in complex multi-table joint query, this efficiency problem must be considered.

In addition, the most annoying thing is database programming.

each database has its own grammar. For example, T-SQL in SQLServer, PLSQL in Oracle, etc ...

Using these languages to write triggers, stored procedures, etc ... is the biggest headache ... and it's not used much ...

Just get to know it ...

Well, after learning the database, we can learn about web development.

The so-called web development is based on browsers.

since it is a program running on a browser, it can't be separated from web technologies such as HTML, CSS, JavaScript and DOM.

So the next step is to learn HTML, which should be the simplest markup language. It's easy to learn.

according to the standard of web2., XHTML will be the specification.

The so-called XHTML is actually similar to the specification of HTML4., except that the requirements for tags are more stringent.

While learning HTML, we should also learn CSS together. This thing is simple, simple and difficult to say. It depends on you personally.

but after all, we are not artists, so we just need to know. (Sometimes I spend a lot of time on the interface ... depressed ...)

I personally suggest that p>JavaScript should be studied a little bit ...

After all, it is needed for Ajax and user experience ...

It is a client scripting language, that is, browser interpretation and execution.

is a weakly typed language, but it is still very profound to study ...

As for DOM, I haven't taken the time to study it, so I dare not draw a conclusion easily.

After finishing the basic web technology, we can get down to business, and the application of Java on the internet starts here:

After learning the web technology, we can make a simple static website. (that is, there is no interaction with the database.)

Static websites end with the suffix. html or. htm.

But static websites are useless, so we should develop dynamic websites.

The oldest technology is CGI (Universal Gateway Interface).

It activates the response process according to the http request on the browser side, and each request corresponds to a process. (Note that it is not a thread, but a process! )

when there are many requests at the same time, the program squeezes the system resources, resulting in inefficiency.

At present, the popular dynamic web technologies are ASP, JSP, PHP, ASP.NET, etc ...

I won't introduce them one by one here. About their contrast, the Internet can be found everywhere. < P > Today's protagonist is JSP!

what is p>JSP? To put it bluntly, it is to embed server-side executable Java code in HTML.

the Java code here is the same as the Java code mentioned earlier.

it should be noted here that jsp will eventually be converted into servlet.

therefore, to learn Jsp well, we must learn servlet first.

corresponding to applet, servlet are server-side scripts as the name implies.

this is the focus of learning.

there is nothing else to talk about.

There are several concepts to be grasped here: servlet container, IDE, taglib, DAO, MVC, etc ...

servlet container is the place to explain the execution of servlet code.

IDE, I haven't mentioned it before, which is because the previous learning is very simple and doesn't need the support of IDE.

and the subsequent development will be more complicated, the increase and management of the number of files will be very troublesome, and it is impossible to memorize many APIs.

So it's time to use the IDE ... I don't care what IDE I use ...

(I use the most common Eclipse, of course, you can also use NetBeans6. or above. I think it's also very good. )

taglib, which is seldom used here, will be used more in the future.

DAO is very important. Its realization methods are various and worth studying.

MVC is very important. But it is important to understand why MVC should be used.

Finally, about the Http protocol, the implementation of thread pool in Servlet container, etc ...

If you have the ability and time, go and have a look ... There is no harm ...

After learning here, you may use another technology XML!

as a java programmer, I think I just need to know the principle of XML.

It's impossible for you to write scherma or DTD ...

So we just need to learn to read and write XML ... (JDOM or DOM4J)

Here's a brief talk about ajax...

When your program requires you to read data and display it without refreshing the page, this is the brave place of ajax.

If your previous javascript is not particularly solid,

the so-called ajax framework is a javascript library. It simplifies and encapsulates javascript.

There are many common ajax libraries, which you can choose to learn according to the situation.

(dojo, prototype, jquery, dwr, ext, etc ...)

After learning here, you can develop a simple website independently.

However, there are many problems here:

1. Large amount of code

2. Long development time

3. Poor system scalability

4. Although MVC is used for layering, JSP+Servlet+JDBC is difficult to maintain. (especially, there is a lot of code in JSP, like ASP)

5. Not ooo in theory

6. Low efficiency

7. Low security

and so on ...

I can think of so many shortcomings in a short time, which proves that there is still a big gap from enterprise-level development.

So what is the real enterprise-level application?

The essence of JavaEE is for enterprise-level development ...

Unfortunately, the core idea of JavaEE has not been understood so far ...

But from a technical point of view, what technologies does JavaEE have?

It seems that there are too many ... EJB is the core idea of JavaEE ... It feels a bit like a. Net framework ... that is, a framework contains all functions.

Unfortunately, I have never had time to learn EJB...