Discussions

News: wingS 2.0 web framework released

  1. wingS 2.0 web framework released (29 messages)

    The wingS project has just released version 2.0 of its framework with lots of major improvements.

    wingS is a component based web framework resembling the Java Swing API with its MVC paradigm and event oriented design principles. It utilizes the models, events, and event listeners of Swing and organizes the components as a hierarchy of containers with layout managers.

    Version 2.0 comes with a completly rewritten rendering subsystem focusing on optimal stylability via CSS and new features like drag & drop support, context menus and server-side code execution via AJAX.

    Selected features of wingS 2.0 are:
    • Comprehensive set of widgets including trees, tables, tabbed panes, menus and more.
    • Highly flexible dynamic layout managers
    • Drag & drop support
    • Component context menus and tooltips
    • Component preferred sizes and borders
    • Handling of browser back navigation
    • Improved styleability via CSS
    The distribution contains extensive documentation. Various demo applications are available online. wingS is released under the LGPL license.

    Threaded Messages (29)

  2. Its looks to be awesome!![ Go to top ]

    I have tried some demos and it looks awesome.
    Can someone enlighten us on this framework with regards to its performance??
  3. Its looks to be awesome!![ Go to top ]

    We did benchmarking for wingS 1.0. But there are no benchmarks available form 2.0 yet. Maybe some numbers, I have measured on my laptop:

    If there's only one request at a time, event dispatching take between 1 and 5 ms on my old laptop. Rendering depends highly on the amount of components, displayed on the page. On a really complex page, it can get a bit more than 10ms.

    The session is stateful, thus there is no penalty for recreation of contextual information .. There are no shared resources and no synchronization, thus it should scale quite linearly .. well, this is all I can say at the moment
  4. Its looks to be awesome!![ Go to top ]

    The session is stateful, thus there is no penalty for recreation of contextual information .. There are no shared resources and no synchronization
    What happens when a user opens another browser window? Does session get corrupted or changes in one window simply are shown in another window? Or you crate duplicate data for each window? Or you just don't care about that assuming that users usually don't do that? I am asking because my own library uses session-scoped data and for some it seems like a limitation because they cannot create several objects of the same type just by opening a new window.
  5. Its looks to be awesome!![ Go to top ]

    What happens when a user opens another browser window? Does session get corrupted or changes in one window simply are shown in another window?
    At first - it never does corrupt data! If you try to work on outdated views, it will just redisplay the latest view by default. The same applies if you navigate back with the browser back button and try to operate on old views.

    wingS includes an epoch counter in each page and component. This allows it to detect operations on 'old views'.

    So: If you browser a list of emails and middle-click on an email header to read it in a new windows. If you delete email it in the new window: Works. If you switch back to old window and try to click other button: wingS detects outdated request and by default only just a fresh view be displayed.

    Optionally you can allow clicks on selected components if you're sure that they will be always valid (think of menu items) or you could use the detection to display i.e. a notification message.
  6. Why not JDNC?[ Go to top ]

    Version 2.0 comes with a completly rewritten rendering subsystem focusing on optimal stylability via CSS and new features like drag & drop support, context menus and server-side code execution via AJAX.
    I don't know where AJAX is, the demos that I tried perform a full page refresh. And it is *slow*. The speed issue may be related to hosting or to lots of users but still, demos do not look snappy which is a turnoff.

    In any case, I believe that it does not make sense to emulate desktop app in the browser, be it Flash or elaborate Javascript. At least not with current HTML and HTTP specs. Menus and windows, rrright. One of the reasons I like web-based apps is that they don't require from me to minimize/maximize/drag windows or icons and I loooove that. The basic idea of a window is to provide an independent canvas for an application to draw on. Anybody runs multithreaded webapps in a single browser window competing for the screen space and keyboard input?

    Why emulate Swing in browser if JDNC already works? Until a single unversal API covers both desktop and web features, we will have desktop apps and webapps. Please, do not make latter to look like former. Hummer H2 is not a real Humvee.
  7. Don't mix wingS with a desktop emulation of swing on the web context! It's clearly a web application framework that aims on an component-oriented approach of writing web applications vs. most page-oriented approaches like the all-hyped JSF and more.

    The really great thing is that you use an API very similiar to the well known Swing API but still have the contact and chance to be in touch with the requirements needed by the web context.

    Just take a look at the example code in the About section!
    I don't know where AJAX is...
    It's only implemented in very restricted areas as we just started. Look at the formatted text fields in the text component demo. The formatting is done on the server. Not the rendering as i.e. the Echo2 project does. Actually THAT would be slow!
    And it is *slow*. The speed issue may be related to hosting or to lots of users
    Actually the issue is that the demos are hosted on a private server with limited upstream bandwidth!

    Regarding the question about the speed in general: We used wingS 1.0.x since years and it had prooven to be very stable and quick. We still need some expierience about wingS 2 as the generated page sized growed due to a more component oriented approach. The pure server based rendering process is really very fast.

    And writing whole web applications with a component oriented API is just great. We built our own dynamic MDA framework on it! Adding new edit attributes becomes to a matter of few minutes as it requires only few lines of java code. No chance to to this with the well known XML, HTTP, Form-beans, place here etc. stuff.
  8. It's clearly a web application framework that aims on an component-oriented approach of writing web applications vs. most page-oriented approaches like the all-hyped JSF and more.

    JSF is certainly a component-orientated approach. In fact, it has been criticised for this in recent threads on TSS.
  9. JSF made only half the way from a pure page oriented approach (JSP) to a component based framework. Please anybody tell me, for what do we need the notion of pages and navigation between those pages at all? Does this notion relate to the problem domain of the web application developer or is it rather an insufficient abstraction from the http protocol and html?
  10. Why do we need pages and action[ Go to top ]

    Well the idea behind it is, that you still have some kind of page navigation system (page 1 flows to page 2 etc...)

    It is one of the gripes I always had with classical UI frameworks, that this part was missing. That JSF made it only halfway by providing a page flow system only for actions (which really are redundant that could have been solved better with Events, which exist anyway, but that is probably a helper to the Struts people) and not for pure page navigation (aka links) is a problem which probably has to be fixed in the long run.

    A page flow system can really be helpful as soon as you get out of, we have only two user interface masks which do anything state.

    But I agree to the part that the page flow system of JSF is not extensive enough by not covering pure links as well.
    But JSF is clearly a component based system, and that was one of the reasons why I jumped towards it, I was sick of either encapsuling the html layouts myself to get something like a component based approach, or having nothing in this area like Struts does. And the component approach of JSF is quite good, but with too much binding XML (which hopefull will be resolved in the long run)
  11. JSF made only half the way from a pure page oriented approach (JSP) to a component based framework. Please anybody tell me, for what do we need the notion of pages and navigation between those pages at all? Does this notion relate to the problem domain of the web application developer or is it rather an insufficient abstraction from the http protocol and html?
    Haven't you noticed that Microsoft built in this paradigm into Word and into help system and into Windows shell long ago? Navigation is good when a page represents a unique resource. Without navigation it is impossible to bookmark a resource. Well, I was told that it *is* possible, but with some javascript hack.

    By the way, it was possible long ago without ajax or frames to create a web app which did not have logical pages and did not allow to go back or forward. Redirection was all you needed. Now you have ajax for that, even better.
  12. wingS 2.0 web framework released[ Go to top ]

    WHY do we need one more web framework ?
  13. Right ...[ Go to top ]

    I had the same question. I need another Web framework the same way I need another VCR remote control.
  14. Right ...[ Go to top ]

    I had the same question. I need another Web framework the same way I need another VCR remote control.
    Still using tapes? Is your web framework as antique as your home entertainment center? Dude, you need to upgrade. ;)
  15. Why not use the real thing?[ Go to top ]

    Another framework u can check into is swingweb which uses real awt/swing components. It is merely a toolkit implementation that makes the awt/swing component to rendered as text and accept form as input. Each component is totally skinnable by your own html (using jxp script language) and lots of components is working already. My case is that everybody try to mimic swing - why not just use it ;). It'll reach final version in 1-2 months.
  16. Why not use the real thing?[ Go to top ]

    Here is similar framework which allow just deploy same application once as Swing once as web framework. It's called wiser - https://wiser.dev.java.net/index.html
    Now difficult part: Which one is the best? ;-)
  17. Echo2 and wingS[ Go to top ]

    It would be cool if someone can show the differences (plus and minus) of Echo2 and wingS since they both use Swing component model.

    It would be a bit more cooler if you can just switch between them if they would just use the same component model (only different implementations) ;-) Is this possible?

    Thanks,
    Lofi.
  18. Hi all,

    unfortunately I realized that the demo server seems to have some hardware issues.
    vicdor:/home/hengels# mount
    /dev/hda2 on / type ext3 (rw,errors=remount-ro)
    proc on /proc type proc (rw)
    sysfs on /sys type sysfs (rw)
    devpts on /dev/pts type devpts (rw,gid=5,mode=620)
    tmpfs on /dev/shm type tmpfs (rw)

    That's what we'd call bad luck. We're working on it to fix it.
  19. Primary demo running again[ Go to top ]

    /dev/hda2 on / type ext3 (rw,errors=remount-ro)
    O.k. - that was the mount output AFTER remounting it r/w again ;-)
    Server up & running again!
  20. Echo2, wingS, wiser, Swingweb[ Go to top ]

    OK, I need to rephrase my question now :-)

    What are the differences between: Echo2, wingS, wiser and Swingweb? (Anything else?). IMO it is a very good idea to use Swing component model, see this thread:
    http://www.theserverside.com/news/thread.tss?thread_id=37635#191543

    But do we need 4 frameworks? If you would write a new app based on a Swing webframework, which one you would use? How "healthy" is the community of each frameworks?

    Thanks!
    Lofi.
  21. Echo2, wingS, wiser, Swingweb[ Go to top ]

    That's exactly the point. The Swing component model is ideal for efficient application development.

    Approaches using the original Swing Components won't probably scale to higher load. Echo is using a pure incremental page update mechanism. I'm not sure, if that properly works on all browsers. wingS is rendering whole pages only at the moment, though some components are already using ajax and can avoid page reloads in some cases. A generic, but optional incremental page update mechanism is planned for the next release.
  22. I haven't looked at wings yet but this frameworks and alikes are just the way to go. I am actually surprised that we as a community needed so much time to see it. Once you start building webapps in a (true) component manner there is no way back, the frustration of page based is just not bearable anymore once you know the difference between the two. JSF should dump the navigation thing before it can be considered truely component based. What is navigation? There is only show and hide. Call a menu's on click event and there is your "navigation".
  23. There's a popular German TV advert, where someone shouts 'Fakten, Fakten, Fakten!"

    Taking this ad as an example I'll try to add some facts:

     * I was using wingS back in 2000 cause AFAIK there was an article about the framework in the German iX magazine. So I would say this framework is pretty mature!
     * wiser comes with limited feature if you are not using the commercial version. AFAIK wingS is completly Open Source!
     * wingS comes with a rich set of GUI widget. Swingweb's widget set seems to be pretty limited compared to that of wingS. For instance the wingS table model plus the corresponding table widget is quite elegant.
     * Don't you need at least a thin client to execute a JDNC app on the desktop? If so, that would be a big minus for many people, cause it requires an additional software component to be installed even if there are plenty of web browser installed.

    Regards
    Daniel S. Haischt
  24. wingS 2.0 v. wicket 1.1[ Go to top ]

    While I've looked at wicket 1.1 very closely, I've only read the documentation for wingS 2.0. Both intrigue me, and I'm trying to make up my mind which product I might pursue. With wicket you have to create a web page. It appears with wingS, however, the web page is generated by the servlet. If that is true, it seems wingS honors the DRY principle (i.e., the page object and its components are the only thing needed to represent the page). Why would one choose one product over the other?
  25. wingS 2.0 v. wicket 1.1[ Go to top ]

    I think the difference is getting obvious, if you look at the con:cern demo http://con-cern.org/engagement/ . All the panels of the demo are implemented once, but used in combination with three totally different navigation strategies. Especially, if you look at the portal like layout of the "ProcessClient" with its draggable frames, the central question arises: where are the pages? How could this be implemented with pages? For what do we need pages at all?
  26. wingS 2.0 v. wicket 1.1[ Go to top ]

    The particular example you point out looks like it makes a trip back to the server to expand, collapse, and remove frames (at least for the hr 1 login).

    I posted my original query to the wicket forum. Some of the responses mention the separation of concerns: Web page designers can focus on the usability and beauty of the page, while Java developers can hook up that page to that application.

    I see advantages to that approach, but there is duplication in the wicket approach. If I add a component to the page, I most likely would have to add the same component to the code.

    So, does the duplication in wicket lead to:

    * more performant page rendering over wingS
    * highly productive development, i.e., the effort produce and maintain an HTML page /and/ the wicket components less than that to produce an equivalent set of components in wingS (as measured in developer time)
    * any other advantage
  27. wingS 2.0 v. wicket 1.1[ Go to top ]

    The separation of logic and design is implemented in wingS in terms of the STemplateLayout manager. Look at the wingSet demo (Interactive Template).
  28. wingS 2.0 v. wicket 1.1[ Go to top ]

    Web page designers can focus on the usability and beauty of the page, while Java developers can hook up that page to that application.
    I hear this argument very often but I wonder which projects can and do afford a full-time web-page only developer/designer without Java skills?

    Most of our applications implented with wingS definitly focused on a huge set of functionality vs. many differently styled pages with only limited functionality inside them. I guess for the latter one a page-oriented might be really the better choice as you 'decorate' the pages with logic vs. trying to squeeze the logic into pages as most business applications are confronted with on trying to use page oriented frameworks.

    But for projects where you are challenged with implementing a specific logic in a efficient and less error-prone way I simply cannot imagine of a better way than using and combining java components instead of the need to keep further XML, HTML or other sort of codes in sync with my Java logic all the development time.

    I don't know details about wicket as I just took a short look on it and it will definitly have its strengths esp. when you are interested in having a greater control over the generated HTML output. For more business oriented needs wingS might be an alternative concept to consider.
  29. wingS 2.0 v. wicket 1.1[ Go to top ]

    I agree. Only in a few situations have I actually worked with a dedicated designer. I think the point should read that wicket CAN be used in such a manner.

    But to say once again, wicket is not page based. It is component oriented just like swing. A page in wicket extends the same Component object that all the other components do. I guess a wicket page is analogous to a JFrame or a JDialog in that it serves as a top level container.

    Futhermore, in wicket you do not "decorate your page template with logic", it is actually the other way around. Wicket does not allow you to put any logic in your templates.

    The advantage of this approach is that you can put all your decorative markup into the template and not in your java code. Why would i want to add a bunch of code that does nothing but output decorative markup into my application when I can put it all into html where it will be more concise and previewable?

    I guess for people who are coming from swing and know nothing about html, frameworks like wingS and Echo are a better choice.

    I know html and all related technologies pretty well, and I do not think I would be happy without total control of the markup generated by my application.
  30. wingS 2.0 v. wicket 1.1[ Go to top ]

    Actually wicket offers the same type of reusability. You can create a panel (which consists of a java class and its layout representation in an html template) and then you can reuse this panel anywhere in your application, or across applications by packaging the class and the template in a jar.

    Wicket also offers borders which can be used to "wrap" any other component in your page. This is great for skinning, factoring out some commonly used html formatting, etc.

    Wicket also allows you to implement your application with the page-as-application mentality. You can create everything in panels and in event handlers simply replace some panels with others.

    Disclaimer: I am a wicket committer.