"Desserts" of the Java WEB framework

Source: Internet
Author: User
Tags date aop exception handling file upload variables java web knowledge base ruby on rails
Web This is a very interesting document, so the summary, in fact, like reading notes, like the 3/25 published:
Do not know how to translate sweet spots, is the sweet place, sweetness, honey point, honey points?

This article is based on interviews with the following people (the last two views of the original or see it yourself!) ):
JSF Jacob Hookom
RIFE Geert Bevin
Seam Gavin King
Spring MVC Rob Harrop
Spring Web Flow Rob Harrop and Keith Donald
Stripes Tim Fennell
Struts Action 1 Don Brown
Tapestry Howard Lewis Ship
Trails Chris Nelson
WebWork Patrick Lightbody
Wicket Eelco Hillenius


JSF (Jacob Hookom)

1. Where do you think the "dessert" of your framework is? What kind of project is he best suited for?
When you want your browser program to work like a desktop program, you can follow the standards and get a lot of third-party support. It is dedicated to reducing complexity. It allows you to do high-quality development without view and specific action, parameter passing, status transfer, rendering, regardless of whether or not you are using tools.

2, it is not suitable for what kind of scene? What fremework do you recommend in these scenarios? Which one is it?
It is not suitable for large-scale, read-only (in fact, read-oriented) site. In this case, struts is recommended because the knowledge base is rich (should refer to documents and user groups).

3. In the framework mentioned below, have you tried them? If you have tried it, which one do you like better? Which one do you not like?
Seam:
Advantages: Very simple Direct
Disadvantages: Too simple for big projects; no good examples of modular development
Struts:
Benefits: Huge document and user base; and then it's true.
Disadvantage: the separation of state/behavior is too dogmatic
WebWork:
Advantages: Easy to use than struts
Disadvantages: Complex UI is difficult to maintain, and UI code is too complex (JSF author to Action
Framework all attack this)
Tapestry:
Advantages: new concept; Can cope with complex UI
Disadvantage: For a component (JSF main competitor), it is still attached to the concept of page/action

4. What will be the future of your framework? What are the easy to use changes for user development? Would you natively support Ajax? Did you plan to support it?
He believes that these should be provided by a third party under the JSF standard. JSF (2.0) provides "Partial Faces Request", which is an AJAX implementation. JSF also enhances annotation build programming.

5. Are there any rumours about your framework that need to be clarified? If so, which one is it? Many JSF books are contrasted with struts. He believes that this does not reflect the characteristics of JSF. He thinks that the JSF that struts and webwork can do.

6. What do you think of Ruby on Rails?
It is as easy to use as WebWork, its COC (Convention over Configration) and scaffolding are very useful. He thinks the COC can be applied to any framework, which he considers to be Ror's greatest advantage. He also believes that Ror will embark on the path of other frameworks (complexity) because people need their own extensions.

RIFE (Geert Bevin)

1. Where do you think the "dessert" of your framework is? What kind of project is he best suited for?
You can pay 10% of the workload and get 90% of the other frameworks ..., which is a full-stack framework (such as ROR). It absorbs the architecture of a mature layered framework and brings together the common benefits. Provides Web Continuation,pojo-driven crud generation, extensible architecture based, no session state control, focus on rest as an API, two-way without logic template engine, integrated content control framework (CMS? )。 The formation of each level provides reusability (Aop,site,sub-site,page,widget,portlet, etc.). Suitable for teams to quickly develop public web projects for people who like to develop reusable components.

2, it is not suitable for what kind of scene? What fremework do you recommend in these scenarios? Which one is it?
Everyone on the team has knowledge of other frameworks and it is difficult to train them. Develop state-related server-side Web components, rather than using RIA or Ajax to implement them. Third-party support is important (poor rife user base is still small). He recommends using JSF in this case. Or, in the case of XML as the main Release form, recommend Cocoon.

3. In the framework mentioned below, have you tried them? If you have tried it, which one do you like better? Which one do you not like?
He has experimented with webwork,jsf,wicket. He likes the simplicity of webwork, but does not like its template mode (tag's template, should), it also does not provide component encapsulation. He thinks JSF's tool support is very appealing. Wicket's pure Java implementation is good, but XML configuration sucks.

4. What will be the future of your framework? What are the easy to use changes for user development? Would you natively support Ajax? Did you plan to support it?
About Ajax,rife just integrated the DWR, and this is also selected to use later. Integrated Dojo,scriptaculous,prototype are easy to integrate in.

5. Are there any rumours about your framework that need to be clarified? If so, which one is it? These erroneous ideas:
1), Rife XML configuration cumbersome
2), Rife is continuations server
3), rife the wheel did not provide fresh things
4), Rife's template syntax is very lame too simple and amateur
5), Rife is based on request of the framework
6), rife function too much, learning curve steep

6. What do you think of Ruby on Rails?
Ror's impact on the Java community was great and the meta-compilation was also trusted. Ror is nothing special and does not benefit a lot from Ruby language.
I hate: It's a template. Partials (components in Ror). The decentralized processing of URLs. The Active record provides a DSL from a database schema, but it is not from domain model. No l10n and i18n support. Manual state transitions. Cannot run on the JVM (...). )。 Actually the scaffold generates the actual code. Ruby lacks tools and Ides.

Seam (Gavin King)

1. Where do you think the "dessert" of your framework is? What kind of project is he best suited for?
Has a rich user interaction experience application. Easy to realize the operation of multiple windows, fallback support, Single Window multiple workspaces, no State browsing. The integration of business processes (BPM) is unique. Seam facilitates the use of data-driven ORM. Follow JSF and EJB3, multitasking support (multiple windows/multiple workspaces), BPM's leading solution.

2, it is not suitable for what kind of scene? What fremework do you recommend in these scenarios? Which one is it?
It is not appropriate to simply display the data from the database to the Web page application, when PHP or Ror should be used. It is not appropriate for a particular HTML component to be designed, at which point tapestry or wicket should be selected. Still using the JDK1.4 people. And those who like struts (hey, tough Enough).

3. In the framework mentioned below, have you tried them? If you have tried it, which one do you like better? Which one do you not like?
JSF: Like his event/interaction model. Like his El and model bindings. Don't like so much XML (why not annotation). It's too hard to create your own controls.
Tapestry: Very good. Form validation is its killer! Template mode is very creative. But the non-Pojo component model makes me lose interest in it.
RIFE: This thing is weird, but it's interesting to have a startup. I want to study further. If the study first to pay the martial arts: D
Struts: The model view bindings for this thing are too complex. Things are out of date.
WebWork: Better than struts, but it's out of date. Xwork was a great achievement, but now it's out of date.

4. What will be the future of your framework? What are the easy to use changes for user development? Would you natively support Ajax? Did you plan to support it?
Portal support. Remote Framework Seam Remoting Framework (AJAX). Tool support for template messages. You will also integrate the ESB, scheduling engine, and asynchronous support later.

5. Are there any rumours about your framework that need to be clarified? If so, which one is it?
None of this is true: JSF cannot handle get requests. Cannot be redirect after JSF Post. JSF cannot coexist with rest.

6. What do you think of Ruby on Rails?
It's a good substitute for PHP. If it has a more serious persistence layer, it can compete with Java.

Spring MVC (Rob Harrop) and Spring Web flow (Rob Harrop and Keith Donald)

1. Where do you think the "dessert" of your framework is? What kind of project is he best suited for?
Spring MVC:
Stable and scalable, support for i18n, file upload, exception handling, these stable support to developers a solid foundation of work. It's best practice to tell you how to do it best. Integrated with spring, the leading IOC far-life support. Support, the spring community is active and huge. Struts developers can smooth transitions. Suitable for a variety of projects, optional variety of result types.
Spring Web Flow: The built-in task processing engine, which supports continuous state during linear processing. Abstraction, reducing the focus of development. Suitable for a variety of project types, Plug-ins support Spring MVC, Struts, JSF, and so on.

2, it is not suitable for what kind of scene? What fremework do you recommend in these scenarios? Which one is it?
Spring MVC: Not suitable for scenarios that require component development. It is a request-driven MVC. Those scenarios recommend JSF or tapestry.
Spring Web Flow: Handles linear page flows and is not suitable for general "free browsing". Of course, Spring Web flow can coexist with request-driven or component-driven.

3. In the framework mentioned below, have you tried them? If you have tried it, which one do you like better? Which one do you not like?
The spring framework supports struts and JSF integration.

4. What will be the future of your framework? What are the easy to use changes for user development? Would you natively support Ajax? Did you plan to support it?
Spring MVC: Simplifies JSP tags. More MVC configuration schema. COC-style default controller, URL innuendo, view, learning the advantages of rails and stripes. Enhanced data binding and validation (support for generic bindings). Portlet support. Spring also accepts Ajax, using the DWR library.
Spring Web Flow: A lot of care to look at yourself ...

5. Are there any rumours about your framework that need to be clarified? If so, which one is it?
Spring MVC is difficult to configure. In spring 2.0, you will improve and you can use your own defined schema-based configuration.

6. What do you think of Ruby on Rails?
Spring Mvc:ror is very interesting. But it's a bit naïve to take it out now. Here's an example of the complex form of variables, ROR will use this COC style to deal with the list of variables, and spring MVC experimented with a variety of styles, but the results were poor. People think that the plural of English is very strange, there is no certain rule, so it will bring confusion, such as (person-> people). So spring ...

Stripes (Tim Fennell)

1. Where do you think the "dessert" of your framework is? What kind of project is he best suited for?
The same as spring MVC, webwork, and so on. It provides a high-quality action-driven framework while minimizing configuration and improving development efficiency. Stripes is suitable for complex data interaction situations. In this case, the strength of the binding verification is fully reflected, can be very good processing form and map conversion.

2, it is not suitable for what kind of scene? What fremework do you recommend in these scenarios? Which one is it?
All action-driven frameworks are suitable for users to loosely associate a page in a non-AJAX-driven scenario (loosely
related) and stateless interaction. For pages that are refreshed every time. It can be cumbersome to manage applications that persist across multiple windows, and you should choose JSF at this point. But I think more than 90% of the Web programs are the former, JSF only for the remaining 9%,ajax for the management of stateless UI more appropriate. The client does not need Ajax, you can look at the wicket, it is simpler.

3. In the framework mentioned below, have you tried them? If you have tried it, which one do you like better? Which one do you not like?
Used struts, webwork, Spring MVC. Struts has done a commercial project, but the trouble with this thing is far greater than the efficiency that it brings. It argues that these MVC have three drawbacks: exposing too much complexity to the person who can. does not provide sufficient development convenience, does not provide enough error and hint information, and there is no small convenience (in fact) of date formatting. It's too bad.

4. What will be the future of your framework? What are the easy to use changes for user development? Would you natively support Ajax? Did you plan to support it?
1.3 to join Inteceptor, implement AOP functionality. Verify that the system is to be strengthened. Ajax support. I'm still looking for a good ajax/javascript library.

5. Are there any rumours about your framework that need to be clarified? If so, which one is it?
These views: 1, stripes use annotation instead of XML, but the change: because the metadata closer to the code, so modify the default configuration is very convenient, not as complex as XML, this is the real changes. 2, annotation means you can only have a set of configuration: I think 90% of the action has its own configuration! Stripes will look for annotations based on the inheritance relationship, and the annotation of subclasses will overwrite the parent class, as validation can be inherited, and can be overwritten if special needs occur. It makes sense. Allow validations to be based on UI events in 1.3. It is backward compatible and does not need to be used.

6. What do you think of Ruby on Rails?
I think the Java community has a lot of places to learn from Ror. Stripes learned the front-end part of ROR, and developers can reduce the amount of configuration. But Ror's rhtml reminds me of the confusing scriptlet in the previous JSP. And the back of the ActiveRecord is a very good idea, the realization is also very good. ActiveRecord is easier to understand than complex ORM tools such as Hibernate, because such features ror cause such great waves.

Struts Action 1 (Don Brown)

1. Where do you think the "dessert" of your framework is? What kind of project is he best suited for?
Documentation and user basics, books and support behind. Easy to hire (and easy to find a job). Although the concept of other projects is more advanced than this, but these are nothing. In fact, the Web layer is very easy and straightforward.

2, it is not suitable for what kind of scene? What fremework do you recommend in these scenarios? Which one is it?
If you need a portlets or complex page (showing a lot of things), then struts either doesn't work or is too boring. In this case you need a component-based framework, such as JSF, Tapestry/wicket.

3. In the framework mentioned below, have you tried them? If you have tried it, which one do you like better? Which one do you not like?
I've tried them all, and they're working very well.

4. What will be the future of your framework? What are the easy to use changes for user development? Would you natively support Ajax? Did you plan to support it?
Struts Action2 is based on WEBWORK2 and will begin soon. Ajax is now supported, we are looking for easier ways to develop, JSF support (Struts Shale), continuation support, and more scripting languages (BSF Extended scripting action).

5. Are there any rumours about your framework that need to be clarified? If so, which one is it?
Struts is too old-fashioned, and not cool, and difficult to use. But you can modify it or expand it yourself. I think the team has more limitations on you than the framework has for you.

6. What do you think of Ruby on Rails?
There are good examples of d&d tools that are designed to help developers improve their development efficiency. We will learn its advanced ideas in Action2.

Tapestry (Howard Lewis ship)

1. Where do you think the "dessert" of your framework is? What kind of project is he best suited for?
I think tapestry can have a lot of benefits for midsize or large-scale applications (even you can benefit from a single page application). Here are the good tools that allow you to create new components. Tapestry doesn't care where data comes from, and many "project types" are based on slices (aspect) (such as Crud vs. RSS feeds vs. etc.). I think tapestry is very easy to integrate with the IOC (Hivemind or with spring) for easy testing.

2, it is not suitable for what kind of scene? What fremework do you recommend in these scenarios? Which one is it?
I didn't find a better tapestry in other Java frameworks. But for Ror, I didn't use it myself, it's hard to say what the project in Ror should look like. I have not carefully compared rife, it seems to be affected by the ROR, especially similar to the ActiveRecord data access layer. But if your application requires a specific URL format, it's unlikely to be a success in tapestry.

3. In the framework mentioned below, have you tried them? If you have tried it, which one do you like better? Which one do you not like?
I haven't tried anything other than tapestry in the past two years. I don't learn ror, because time is too limited.

4. What will be the future of your framework? What are the easy to use changes for user development? Would you natively support Ajax? Did you plan to support it?
Tapestry 4.0 has excellent AJAX support through the Tacos library. and Tapestry4.1 to further strengthen the support in this regard.
Tapestry 5.0 offers significant improvements: there is no abstract class (Tapestry's eccentricity:). No forced inheritance relationship. Annotation the property rather than the method. There is no XML, only templates and annotaions. Only class loading, automatically looking for class changes. Minimize API, Beyond annotaion. Aspect-oriented (aspect-oriented) module construction, using Mix-ins.

5. Are there any rumours about your framework that need to be clarified? If so, which one is it?
TAPESTRY3.0 is not easy to test, and 4.0 has improved a bit. Tapestry is just a solo show; we actually have a lot of active contributors. The learning curve of tapestry is not steep in field. It has only beautiful templates to implement; in fact, tapestry is characterized by state management (allowing objects to store state, rather than multithreaded single cases to manage the free and persistent state of requests).

6. What do you think of Ruby on Rails?
Very influential. But the implementation of the template is very ugly. I've heard a lot of opinions about the pros and cons of Ror. Based on my basic understanding, these ideas have an impact on Tapestry4 (it has a deeper impact on tapestry 5).
Ror means limiting your choice: If you choose Ror, then you must honor its practice (CoC. It seems that your money will spend a hate value. These are similar to Microsoft philosophy. And Java is more about giving you a looser choice than the tools you use, but it's ambiguous to say that it requires a deeper understanding of your tools. Not only for tapestry, but also for Jee, spring, the entire stack framework, it needs to learn from ROR, not only to provide the tools, but also to provide a complete solution.

Trails (Chris Nelson)

1. Where do you think the "dessert" of your framework is? What kind of project is he best suited for?
Trails applications require only the Web interface and the persistent domain model. Trails to your domain.
Model quickly provides an interface, in addition to Pojo itself does not need additional code. Trails allows you to modify the appearance and behavior of the interface, including validation, i18n, and security. None of this requires Java code generation, and people who don't like code generation should feel comfortable.

2, it is not suitable for what kind of scene? What fremework do you recommend in these scenarios? Which one is it?
Trails is good enough to pay attention to. It allows you to quickly deliver and ask your customer: "Is that good enough?" ”。 This will change your workflow, but it is not a solution that can cover all of your requirements. When the UI requirements are high, trails has no advantage. I think trails is suitable for mixed applications, for administrators they only need to be good enough, then you can use trails. The rest of us can customize the development, we are using tapestry, Hibernate, spring to implement these parts, trails is based on them. Trails is also not suitable for non-interactive applications, such as report applications, which can be considered eclipse BIRT.

3. In the framework mentioned below, have you tried them? If you have tried it, which one do you like better? Which one do you not like?
I use struts a lot. It used to be the great framework. The main flaw is that it does not automatically help set data to domain model. I've also studied JSF, which is stronger than struts, but custom builds are very difficult. Tapestry is very convenient for custom builds, especially for building higher-order components, which are made up of other components, and trails is using it.

4. What will be the future of your framework? What are the easy to use changes for user development? Would you natively support Ajax? Did you plan to support it?
For trails, we stand on the shoulders of giants. Tapestry has made a lot of effort in Ajax functions, so it's not difficult for trails to dance with them. But we need to create more examples to illustrate these. We are also committed to making trails easy to intervene in projects that have already been carried out. In the future, trails also joins the instance-based security (role-based role-based is currently in use) and method invocation.

5. Are there any rumours about your framework that need to be clarified? If so, which one is it?
Trails is a transplant to the ROR. Trails's name comes from rails. It's based on the rails concept, but it's not a transplant.

6. What do you think of Ruby on Rails?
I think we have a lot of places to learn from Ror that will help us enjoy the development of Web programs.

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.