Open Source RIA on Spring Framework


    RIA - Rich Internet Application.
    Spring Framework - application framework.
    Open Source - open source. Take and use.
    About what RIA application is developed, where you can see it and get the source code under the habrakat.



    Introduction

    I think learning is worthwhile in practice. Practice should be meaningful and arouse interest. Those. We come up with an idea and try to realize it with all our might, using the technologies, tools, approaches studied, etc.
    At the beginning of studying the Spring Framework, I came up with the idea of ​​lists that simplify the process of repeating learned words. Those. when reading literature in the language we are studying, we come across a word whose translation we don’t know. We add it to our electronic dictionary, and in the evening we repeat new words, and I would like that this list could be transformed for a more effective repetition - mix the words, and invert the direction of the translation. For the project, special entities were invented:
    • Memes are a unit of information. For example, a word with a translation.
    • Maps - a list of memes.
    • Space - collection of cards.
    Then came the idea to make different types of cards - not only a dictionary for learning a language, but also cards for abstracts. I wanted to be able to expand this diversity in the future. It was assumed that there would be a common part for all cards, and specific varieties should be inherited from it.
    After a couple of months of leisurely work, the project came into being. During this time, the design managed to change, OpenJPA changed to Hibernate , the js-object model was completely rewritten using jQuery UI , but the layout, as developed under Chrome, remained only under Chrome, although it looks passable in Firefox too.

    A bit about technology

    Spring Framework 3 - mainly used native DI , Spring MVC and Spring Security . Spring Security is configured only on standard gears, using differentiation of user rights using groups and roles. Direct access to the database via JDBC , the notorious remember me and md5 hashing - all inclusive.
    Hibernate - tuned using notations. For search, hibernate criteria and a bit of HSQL were used .
    Tiles is a server-side template engine.
    View Resolver returns Tiles View (pages) or JSONif the pattern cannot be applied. Objects are converted to json format automatically using JacksonJson .
    All this mess is going to Maven .
    On the client side, ajax is used extensively . Partly too extensive. I would like to insert some kind of caching layer. An object model is created that repeats the essence of the server side, but with a dynamic analysis of the structure of objects. Map objects are based on jQuery UI . With its help, inheritance of objects is easily implemented.
    EJS is a client-side template engine. It independently picks up template files, which is very convenient. Implemented a translator module based on Microsoft Translator API, but not yet implemented in the system. Fonts are drawn using the Cufon library .

    Server Cases

    Since the beginning of development, the project repository has been lying around in various places. Because The project sources were needed from different computers, then I used Dropbox first . I synchronized the project folder. After a week of torment, I started a local SVN repository and synchronized it already. Then I transferred the project to an online repository. I wanted to transfer the project to Git in the future, but for a start I still wanted to use SVN. In this case, the repository must be private. In haste, the search found unfuddle . Now that I have decided, it seems, transferred the project to github .
    The service is hosted on jelastic . The project was developed for reverse proxy server architecture and for jelasticI had to redo it a bit. Because of this , there is a strange bug on jelastic - at the first call to the service, static resources are not given by the server. You need to update the page and then everything is ok.

    Take it away!

    The Internet is full of examples of development for the Spring Framework , so one more thing will not be worse. Any activity related to this project is welcome.

    References

    Project: http://memorized.jelastic.com
    Sources: https://github.com/evgenij-kozhevnikov/memorized
    Advanced analogue: trello.com (UPD. By devIceMan )

    Also popular now: