In the field of software design, there is a famous saying that the famous name is simple.
Almost all masters of software design will be trained in their works:
"Simple and beautiful",
"Keep IT Simple, Stupid",
"Less is more",
... ..
This is a good voice, everyone will say.
But in fact, this is also the most widely used in violation of it.
"Simple is beautiful" this truth is like heaven, everyone says heaven, but everyone is desperate to delay the time to arrive at paradise.
In general, software development technologies have always become more complicated and increasingly huge.
Let's see the development history of Java Web performance layer technology.
(1) First, servlet is born. Web programmers are very happy, I feel that it is much more cool than CGI.
(2) After a while, people think that HTML is too unhappy in the Java program. After all, in HTML, static text tags account for most, and the dynamic display part is just a small part. It is better to write Java code in HTML. So JSP was born. Become a strong competitor of ASP.
(3) After a while, people think that HTML and Java code are mixed together, not only the page structure is poor, but the Java code is difficult to maintain. This is the famous "Java Code Poll" problem. It is better to replace Java code with custom XML elements, so that the entire page is XML. So, taglib appeared.
(4) There is still a problem, Taglib cannot be displayed in a general HTML browser or editor, the page cannot be seen. The ASP.NET is quickly visible to the advantages of developing, and is being taught in the Web Development field. Java world rush to fight, start JSF projects. A large number of Web Framework camps has an authoritative heavyweight player.
Various new concepts have endless, and the page process is more complicated.
It is said that this is to reduce development difficulty, so that the programmer only focuses on business logic, not to care about the underlying technical details; it is said to be an enterprise application, and the demand for enterprise applications is complex, so the simple problem is complicated It is reasonable - it is said that this is for the systematic facing expandability, scalable ...
This is an era of mythology, which is a concept of negative manufacturing.
Deep thinking, I think the complex trend of technology, maybe it is the commercial market for commercial demand?
There are two types of driving force in new technologies:
(1) The first driving force is to solve the true problem.
For example, the appearance of servlet is to solve the problem of spatial time consumption of CGI. More than CGI, servlet is a new idea, an alternative technology.
The new technologies caused by the first driving force are relatively long, not sufficient to maintain people's technical needs.
(2) The second driving force is to make up for the shortcomings of the previous technique.
Complex technologies have some shortcomings, so it creates domestic demand for the next technological innovation. Moreover, the more complex technology, the more inadequate, the technology "innovation" (or "repair" more suitable?) Domestic demand and business opportunities are, forming a technical "repair" industry chain of self-produced sales.
For example, the emergence of JSP is to assist in generating servlet; and Taglib's appearance is to make up for the lack of JSP; the Taglib visualization plug-in is to make up for the shortcomings of Taglib. The business opportunities are unlimited, and a large number of technical vendors that offer a variety of Taglib and Taglib visual plugins, the technology market is booming. The new technique of this second driving force is relatively short, and the children of the children will be unfusited, and there is no broken.
But I firmly believe that the technology will return to the true.
One day, we will return to the road that really solves the problem, rather than continuing a road to technology "repair replenishment".
2. The birth of FASTM - "Simple is the beauty" king returned
The Java World is an open world. I think it is because of this, the majority of Java programmers must not leave this Java development camp.
Java.sun.com announced all Java technical specifications.
Apache.org Open Source Community has attracted a lot of programmers to join the Java development camp.
SourceForge.net provides a larger programmer (not only Java), providing space for communication, sharing, and development.
It is because such openness has promoted the unprecedented development of Java development technology.
It is also because of this openness, forming a Java Web performance layer technology group.
In the field of Java Web performance layer, JSP TAGLIB page technology is authority and standard, but this area does not exclude other technologies.
As mentioned above, JSP Taglib is not perfect, so it has the inherent demand for development.
At the same time, this also has prompted people to continue to explore, compare other technical possibilities.
All levels of the Web performance layer - O / R layer, business layer, web framework, etc. are directly implemented by Java code, which can be well structured, objective, and there is no problem. Only the Web performance layer, the natural structure is loose, and the wild is hard.
I am a Java WebApp programmer, has always worked hard to do the same structured, objectivity. For two or three years, I have applied, studies, compared a variety of web performance layer technology:
Through research comparisons, I found the "Source" in template technology - the logic code contained in the template (IF, Else, For, assignment, operation, call, etc.).
These logic code contained in the template is the natural enemies developed by "what you see", and it is also the first culprit to destroy the reuse.
JSP Taglib, Velocity, TapeStry, XSLT, etc. are all logical templates. If there is no special plugin, these templates cannot be properly displayed correctly in a normal HTML browser or editor. Moreover, the logic of mixed in HTML is no way to reuse; you cannot separate these logic into general methods or classes.
JDynamite is an open source project that transplants PHP template technology to Java. JDYNAMITE Template Marks the Dynamic Block with the begin-end. Tag placed variables with the {}. The JDYNAMITE template does not contain any logic, which is a template technology that "WYSIWY", which is capable of correctly displayed in a normal HTML browser or editor.
XMLC and other DOM template techniques directly use the HTML file as a template, of course, the template technology of "what you get".
JDYNAMITE and XMLC is in common, and there is no logic in the template. All template processing logic (inspection judgment, node assembly, variable replacement, etc.) are completed in the code.
Although these two techniques have separated from the template definitions, they do not completely separate the logic and data from the template.
Let's take a look at the usage of HTML DOM in XMLC technology. A HTML DOM just generated, or a pure template. However, the program directly changes the node data of the HTML DOM, and even change the position and quantity of the node. This HTML DOM can no longer be used as a pure template, let alone multiple threads in multithreaded environments. At the same time. Think about it, in a static text accounting for most DOM structures, this practice will cause how big space and time.
JDYNAMITE usage has the same performance problem as XMLC.
I think how to solve this performance defect. Finally, on the basis of JDynamite, PHP, and DOM, I created the concept of Template Dom and ValueSet DOM. From the usage, further data and logic thoroughly from the template. Separate. Thus, the FASTM open source project was born.
FASTM has an unparalleled superiority of other pages generation techniques:
What you have come, easy to learn, fast development, small running space, fast running speed, complete separation of template and data, multi-to-many free matching data.
FASTM is the best template technology from all aspects - the fastest, minimum, most easy to use, the most flexible and powerful (very flexible with pure servlet / JSP). I expect FASTM page generation methods to better solve the web page generation problem and can be popular in the world's Java web programmers.
Is it just self-selling self-selling self-selling?
This is easy to distinguish: FASTM is a fully open source project, a trial. Due to FASTM's ideas, implementation and usage easy to understand, this trial can't spend any time.
FASTM truly proves that "simple, beautiful". Let me explain the FASTM ideas and usage.
3.1 FASTM template is a lightweight DOM
Like the PHP template, the FASTM template contains only three elements:
(1) Static text.
(2) Place a variable. Use the {} sign.
(3) Dynamic block. Use the begin-end dynamic logo.
Among them, the dynamic block can contain other elements - sub-dynamic blocks, placeholders, static text. Therefore, the FASTM template is a tree structure, which is equivalent to a lightweight DOM structure. Behind We call this structure as a Template DOM. The following is a simple example. For example, the HTML piece below.
[code]
PT
ION value = "{zipcode}"> {zipcode} o
PT
ION>
select> [/ code]
This piece contains a begin-end block (zipcodes), which contains two identical variables {state}, and other parts are static text.
The Fastm Template DOM structure of this piece is as follows: