1991, I was 7 years old, just entered the academy less than six months. And the computer was also a novelty in that era. But in that environment, Java has sprouted. That year, Sun launched a green plan to develop a software that could run on any consumer electronics product. However, because C + + itself has a lot of shortcomings, so the project team decided to develop a new language Oak. Initially, Oak was applied to the set-top box, but the project failed at a time when the market was immature. But Oak was appreciated by Sun's leadership, so:
The Java language was born on March 23, 1995 after the small-scale transformation of oak, and it is widely used in the Internet field.
A year later, in 1996, I had to graduate from primary school smoothly. But that's not the point, and the point is that in the same year, Java also graduated from Sun's primary school. During that year, Sun unveiled its first JDK1.0. Of course, Java is still weak at this time. Most of the class libraries are imperfect. Java-enabled virtual machines are virtual machines called Classic VMS .
Time flies, Flash 6 years later, in 2002, I entered the University study. In the same year, JDK 1.4 was released. In the new JDK, the old classic VM virtual machine was completely eliminated, using hotspot as its default virtual machine. Which is now the most common Java virtual machine. Then, at this time, although I have been in touch with VB 6.0, Pascal and other languages, but Java is quite unfamiliar.
The study in the university is quite intensive. Although many programming languages have been contacted before and after. But formal contact with Java still begins with a junior. At that time, a compulsory course for Java was arranged in the school. As a result, I have a connection with Java. But then, I didn't like Java. From my perspective, a door to the console output "Hello World" to knock the old long command of the language can have any future? Just as most people now criticize Java for the syntax of the Luo Li Bar, at that time, I was more inclined to C strong, concise VB.
Although full belly does not like Java, but as a must class, is absolutely cannot neglect. Otherwise, the diploma will be untenable. In order to learn Java well. I bought a book on Java programming methods and examples, and this is my first Java book. The book can be said to be of little fame. and "Thinking in Java" and the like Daniel, can be said to be a weak explosion. But I have a high opinion of this book because it is simple enough and clear. can make beginners understand. And I do not particularly like "thinking in Java", to tell the truth open "thinking in Java" This brick book, I immediately want to sleep. Not because the content is not good, but the language is too awkward.
2004, that is, in my hard study of Java this year. JDK 1.5 was released. It has to be said that this version adds a lot of compelling features. greatly simplifies the development. For example, generics, although Java's support for generics only stays at the Java language level, is better than nothing. This allows us to read the code more happily. In addition, the automatic packing and unpacking also omitted a lot of mechanical code. Annotations allow us to add new vitality to a class, field, or method. Enumerations allow Java to write more elegant code. Enhanced for loop, which makes our program more concise. In short, I think JDK 1.5 is definitely a milestone version. It brings us too many surprises.
After 2 years of Java study, in 2006, I graduated from an honorable undergraduate. My graduation project is related to the design pattern. Because of an accidental opportunity, I was exposed to the design pattern, and then it was logical to use it as my undergraduate thesis. If design patterns are born from architecture and are introduced into the software industry by GOF in C + +, it is in Java. Few Java programmers are unaware of design patterns. At that time, I held the Shanhong Java and the model, the design patterns and design principles as the existence of God, sacred and inviolable art peak. I don't know how many people are keeping my thoughts at the moment. Java and mode is as thick as thinking in Java, but I don't think of it as a brick, because it does give me a lot of inspiration.
The year I graduated from college (2006), JDK6 Beta was released. The JDK 6 did not change as much as JDK 5. But the improvements are also impressive. For example, the integration of scripting language support, the compiler API access, and so on. These have greatly improved the flexibility of language. But for me, I think the most important improvement is the performance optimization of synchronize. In JDK 1.5, the Synchronize key performance is poor. This leads us to have to abandon synchronize and use Reentrantlock to improve the performance of the program. But it's obviously a lot of trouble. Because synchronize really good. This problem is solved in JDK 6.
In this year,Java was open source and established OpenJDK. This is an absolutely historic and momentous event. Now, in the major Linux distributions, the default installation is OPENJDK. Its importance is also self-evident. At this time, I also had the privilege to start my postgraduate study career.
In 2008, I was working on my master's graduation project. This is a multi-agent framework based on the peer platform. Of course, this is done in Java. Applications from the bottom to the top are implemented using Java. To enable the agent to migrate across multiple network nodes, I started to get involved and focus on some of the relatively low-level technologies in Java. such as dynamic class loading, byte code, and so on. It can be said that at this time, I really began to focus on Java technology. Unfortunately, perhaps the big data and distributed computing were not as hot as it is now, and perhaps I was too ignorant to realize the prospect of distributed computing, a distributed execution framework that I would have buried in my hard drive after I finished my graduation project. In retrospect, it was a pity.
Just this year, Oracle acquired BEA and JRockit virtual machines into the bag. But I have no feeling about it.
In March 2009, I went smoothly from a master's degree and started my first job. Fortunately, this is also a work with Java. And just this year, Oracle announced the acquisition of Sun. This is a blockbuster for me for every Java programmer and community. A product that advocates open source and freedom has been acquired by a ruthless commercial company. Is this good or bad for Java? Equally worrying, there is the future of MySQL.
I was lucky enough to be in a good company. Under the leadership of the older generation of engineers, I can grow more. A number of Java performance-related issues have also been encountered during the years of work. At this point, I started to get involved in some of the internal mechanisms of Java virtual machines, such as GC, memory distribution , and so on. It can be said that most of the knowledge associated with this is accumulated in the work.
In 2011, JDK 7 was released. Unfortunately, however, our application still stays in JDK 6. I believe that so far most of the existing systems may be using JDK 6. But version migration is a big deal, because a large version of the changes in haste, will bring high risk to commercial products, also means that testers have to do more testing. Therefore, unless there is a very strong demand, the migration of the large version is very cautious. What exactly did JDK 7 bring us? There are, of course, some syntactic enhancements and changes, such as switch that supports strings, representation of binary integers, support for multiple exception captures, and TRY-WITH-RESOURCES statements for resource management. And the introduction of NIO2. More importantly, the G1 collector is officially enabled. In fact G1 was given in JDK6, but only as an experimental product. In addition, according to my tests, JDK 7 has a certain increase in performance compared to JDK 6.
At the same time, the annoying string memory leaks in JDK6 are also perfectly addressed in the JDK. Because JDK7 re-implemented the Java.lang.String class. Make it more secure. The string constant pool is also moved from the Perm zone in JDK 6 to the heap. This is also for the future to completely eliminate the perm area to do a little preparation!
In the prevalence of dynamic language programming Today, Java is also advancing with the times, although the bloated body by some people pointing point, but any change will take time, in JDK 7, the Java Virtual Machine introduced a new instruction invokedynamic. Used to support dynamic invocation. From then on, the dynamic language will work better on the Java virtual machine.
JDK 8 was released in 2014. There is no doubt that the most notable introduction to JDK 8 is the support for functional programming . As we can see, Java is making itself as perfect as possible, and from then on, Java can do a lot of things with very few statements (but it takes time to check if it's good or bad). Functional programming the bright spot is so bright that it's easy to overlook the other improvements that JDK 8 brings. For example, in JDK 8, the perm area we are familiar with is completely removed and replaced by a direct memory space called the metadata area. In addition, JDK 8 also makes great enhancements to concurrency, such as the addition of the Longadder class. This is a performance atomiclong concurrency tool class. Can you imagine that?
Following Java for so many years, is constantly accumulating and learning so that I can grow up with Java, this is my lucky. Java is not perfect, just as no thing is perfect. But this does not prevent us to love a technology, in order to record what I have learned in Java over the years, thinking, and thinking, so "real-time Java Virtual machine--JVM fault diagnosis and performance optimization" was born, it was published in 2015, this year, I am 30 years old, Java 20 years old, I was 10 years older than Java.
"Java 20 Anniversary" I'm 10 years older than Java.