Modern Web Application Frameworks

Size: px
Start display at page:

Download "Modern Web Application Frameworks"

Transcription

1 MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY Ð Û Å«Æ ±²³ µ ¹º»¼½¾ Ý Modern Web Application Frameworks MASTER S THESIS Bc. Jan Pater Brno, autumn 2015

2 Declaration Hereby I declare, that this paper is my original authorial work, which I have worked out by my own. All sources, references and literature used or excerpted during elaboration of this work are properly cited and listed in complete reference to the due source. Bc. Jan Pater Advisor: doc. RNDr. Petr Sojka, Ph.D. i

3 Abstract The aim of this paper was the analysis of major web application frameworks and the design and implementation of applications for website content management of Laboratory of Multimedia Electronic Applications and Film festival organized by Faculty of Informatics. The paper introduces readers into web application development problematic and focuses on characteristics and specifics of ten selected modern web application frameworks, which were described and compared on the basis of relevant criteria. Practical part of the paper includes the selection of a suitable framework for implementation of both applications and describes their design, development process and deployment within the laboratory. ii

4 Keywords Web application, Framework, PHP, Java, Ruby, Python, Laravel, Nette, Phalcon, Rails, Padrino, Django, Flask, Grails, Vaadin, Play, LEMMA, Film festival iii

5 Acknowledgement I would like to show my gratitude to my supervisor doc. RNDr. Petr Sojka, Ph.D. for his advice and comments on this thesis as well as to RNDr. Lukáš Hejtmánek, Ph.D. for his assistance with application deployment and server setup. Many thanks also go to Ondřej Tom for his valuable help and advice during application development. iv

6 Contents Introduction Problematic and Basic Terms Web Applications Web Frameworks and Design Patterns Modern Web Application Technologies Code Simplification Technologies Bootstrap Design Patterns Model View Controller Component Based Architecture Programming Languages PHP Ruby Python Java Selection of Comparison Form Comparison Criteria Chapter Conclusion Framework Analysis Laravel Framework Usage and Properties Comparison Criteria Summary Nette Framework Usage and Properties Comparison Criteria Summary Phalcon Framework Usage and Properties Comparison Criteria Summary Ruby on Rails Framework Usage and Properties Comparison Criteria Summary Padrino Framework Usage and Properties v

7 2.5.2 Comparison Criteria Summary Django Framework Usage and Properties Comparison Criteria Summary Flask Framework Usage and Properties Comparison Criteria Summary Grails Framework Usage and Properties Comparison Criteria Summary Vaadin Framework Usage and Properties Comparison Criteria Summary Play Framework Usage and Properties Comparison Criteria Summary Framework Overview Summary and Comparison Tables Chapter Conclusion Web Application Development Application Requirements Application for LEMMA Application for Film Festival Framework Selection Application Design User Roles Administration Content Management Graphic Design Application Implementation Development Tools Creating the Project Project Structure General Development Process vi

8 3.4.5 Content Management Implementation User Authentication Deployment Conclusion Attachments A. Design Diagrams for LEMMA Applications B. Contents of Attached CD Glossary Bibliography vii

9 Introduction Since the introduction of Web 2.0, website content management has redefined the way modern websites are used. There are numerous ways to manage the content of a certain website to make it secure and user friendly. Most importantly, the whole management system has to be effective. In order to accomplish this, programmers often face a large amount of time consuming development that would later include rewriting parts of code and reusing it in other projects. With countless hours spent on programming from scratch, it is necessary to look for new ways to build high end web applications fast and easily. Web frameworks have become crucial for creating effective web applications, not only for managing its contents. Today we are able to utilize over a hundred different frameworks written in various different languages, with often a very distinct way of approaching a certain development problematic. Web developers were given a powerful tool for creating complex web applications easily and fast, which relieved from the burden of developing each system core separately from the beginning. The aim of this paper is to analyze functionality of modern web frameworks, describe distinctions between them and present different ways of development approach. Since there are over a hundred of these frameworks, this paper includes analysis of a representative sample of them and describes their advantages when using them for certain application type based on requirements of a given application. In the first chapter the paper introduces important terminology used to describe procedures and technologies that are crucial for developing web applications. The chapter also covers the specifications of chosen criteria for the quality assessment of the chosen frameworks. In chapter 2, every framework is verbally described on the base of research and its output is structured in a research summary and transparent comparison tables. The practical part consists of designing the web application for the Laboratory of Multimedia Electronic Applications (LEMMA) and the website of the film festival organized by Faculty of Informatics in the best suited framework according to its usability, extensibility and deployment requirements, based on the research conducted in chapter 2. 1

10 1 Problematic and Basic Terms This chapter covers the introduction to the web application problematic and briefly describes basic terms and common development approaches used in the thesis. It also briefly covers modern code simplification technologies that allow developers to save time by simply generating large parts of the code or writing such parts using special macros. The last part of the chapter focuses on describing the terminology used in the final selection of tested web frameworks. 1.1 Web Applications Since early 90 s the internet has become the world s most popular center of information sharing, advertisement and marketing, and it is responsible for the revolution of information technologies. There is no reason to doubt that it is a headstone for applications that are accessible from any location using just the internet browser, without any need of installation, yet still maintaining the functionality of a desktop application. Since the internet was not originally built for such purposes, numerous new technologies were created to provide developers with the tools needed for building such applications. Thus emerged the term Web Application, which refers to any software running in a web browser and created in a browser-supported programming language relying on the browser to render the contents of the application. Web applications have become very popular due to the ubiquity of the web browser in a role of a client (known as thin client, because it itself does not contain the application logic). Even though web applications were written to perform and look like desktop applications, there are differences that make them rather unique. Accessing the application from anywhere is its biggest advantage. Users can log in to the system from different destinations simply via browser and manipulate data on the server, giving them access to their own personal settings of the application, bringing the value of portability. Another advantage of web applications is that they can be be operated by more users at once. They can also be used to mediate communication between them, creating a network of operations that is usually required for communitybased projects. On the other hand, web browsers were created to browse the web pages, and Back and Forward functions that are used to navigate in website history can be confusing for the application. Also, web applications are unable to access the file system of a client computer, which 2

11 1. PROBLEMATIC AND BASIC TERMS can be both advantageous and detrimental. Users cannot manipulate with files on their drives but there is also no danger to their security. Access to the web application is mediated by the internet browser, which is closely connected to the client/server architecture. Such architecture represents a server that provides various contents or services to its users. Also, it is possible to connect to it from different locations using a simple access point the browser. The client part usually represents the presentation layer and the server represents the application and data layer. According to the extent to which the content is processed on the client side, part of the application on this side is referred to as thin or thick client. The web browser s purpose used to be solely browsing a static website that is accessed remotely. The main key was the possibility of enriching such access by dynamic effects by adding JavaScript, Flash, Java etc. The main purpose of web applications is to provide dynamic content generation and access to the distributed sources on the server side. Using technologies such as Java Server or PHP it is finally possible to enrich the websites with real application functionality and an easy way to access the data in databases. With introduction of the AJAX technology, which allows access from the client part of a dynamic website or web application to the server asynchronously, the client is not disturbed by redrawing the full website but only the certain snippet showing the updated content. This transition from a static to dynamic content has upgraded the web to the version Web Frameworks and Design Patterns Since the introduction Web 2.0, web applications have been overtaking the internet and becoming even more popular. Developing such applications has become more complex and the requirements, usually dealing with the same core problem, were increasing. During development, programmers were often meeting problems that have already been solved numerous times before. In order to standardize such problems, various templates and patterns designed to solve the repeating problem begun to emerge. Such templates (Design patterns) were created in order to maintain the given standard and order in the source code when creating complex information systems. First basic elements of web frameworks were standardized. Design patterns are closely connected with frameworks. A framework aims to alleviate the overhead associated with common activities performed in web development. For example, many frameworks provide libraries for database access, templating systems and session management, and they of- 3

12 1. PROBLEMATIC AND BASIC TERMS ten promote code reuse. [1] The Design pattern defines the relations between classes and objects, without concrete implementation. Web framework is a development interface, a set of software tools for creating dynamic websites, applications and services that are a specific realization of an abstract design pattern. Web framework will not, however, provide developers with solution to the given problem. It is but a tool for facilitating the approach of the goal. It depends on a type of framework whether it will determine the structure of the solution and to what extent will the programmer be able to affect such structure. [2] Thanks to this, the programmer can fully focus on the problems of logic. 1.3 Modern Web Application Technologies Web applications are connected with using basic technologies for purpose of displaying the content in a browser, such as HTML or CSS. However, even such basic matters originally designed just for creating a website and adjusting its looks tend to be reused, and creating same structures for different websites has led to introduction of frameworks used for fast creation of basic website layouts that could be easily adjusted. Such technologies are usually connected with the web framework and are meant to facilitate the application development even further Code Simplification Technologies Main purpose of every web browser is to display the site on the client side using HTML, which has a strict coding standard in order to prevent display errors in various browsers. With introduction of HTML 5, developers were given more freedom when following the W3 1 standards which allowed easier creation of the front-end part. However some interpretations of HTML go even further. To completely simplify the tags used in HTML, several abstract languages have been introduced to facilitate the writing of pair tags with classes and ids. For example HAML is a lightweight markup language written in Ruby that is used to describe the HTML of any web document without the use of traditional inline coding. [3] It was created with an intent to avoid explicitly coding the HTML into the template and thus providing clear HTML structure using only few key tags. 1. The main international standards organization for the World Wide Web. 4

13 Listing 1.1: HAML code example %body # header %h1 MyPage %h2 My page # content %h3. t i t l e = mypost. t i t l e %p. body= mypost. body # f o o t e r 1. PROBLEMATIC AND BASIC TERMS This code example will render the body of a HTML page with three main divs 2 with assigned classes and given titles. The HTML code of the same content would be much longer and would also require the tag closing which, when forgotten, may be crucial for the valid display of the website. However, HAML is not the only abstract language for describing HTML. For example SLIM is also written in Ruby and disposes of a different style of coding yet it still preserves the simplicity of a lightweight language. In comparison to HAML, SLIM omits all special characters used for classifying the control commands and its code recalls classic HTML without brackets. Problem of pair tags is solved by line indentation, creating simple and clear lines of code. The Cascade style sheets often meet the same problem of strict standards that may variously affect the visual part of the website if not followed. However, the main issue with CSS is the constant reuse of code and the absence of a proper nesting which often leads to long, repetitive and unclear lines of code. The solution for these problems came with the introduction of SASS, a style sheet language that extends the functionality of CSS3 by several mechanisms available in more traditional programming languages, particularly object-oriented languages, but that are not available to CSS3 itself. [4] SASS introduced the declaration of variables, proper style nesting, arguments, selector inheritance etc., giving the developer a powerful tool for adjusting the looks of a website in a way that is similar to object-oriented programming. In 2009, a dynamic stylesheet language called LESS was introduced. It extends SASS by several more functions and has become the most used tool for dynamic creation of cascade stylesheets. 2. HTML elements used for defining a page layout. 5

14 1. PROBLEMATIC AND BASIC TERMS Bootstrap Technologies mentioned above were created to simplify the writing of the code or to extend it with functions that the original language was not able to provide. Twitter Bootstrap takes the completely different approach by building the website almost like using a block building kit. Bootstrap is a free collection of tools for creating websites and web applications. It contains HTML and CSS-based design templates for typography, forms, buttons, navigation and other interface components, as well as optional JavaScript extensions. [5] Since the start of the GitHub project in 2010 it has become the most starred GitHub development project and it has been used by institutions such as NASA or MSNBC. The main idea of Bootstrap is to relieve the web developers from coding the very structure of the site and giving them the set of functions that allow them to build the basic website using just ids of given content, creating a responsive template in minutes. Since Bootstrap is opensource and active on GitHub, it follows the modern trends in webdesign which are then implemented to its structure. The most time consuming procedure when developing a website is the finalization of the display for various devices, resolutions and web browsers. Since Bootstrap introduces sections and divs that are pre-styled for such conditions, developer is relieved from dealing with this problem by simply following the clearly structured documentation that has already been translated to several languages. Bootstrap is modular and it consists essentially of an extensive series of LESS stylesheets that implement the various components of the toolkit. Reusable components allow developers to avoid styling every section by itself, thus simplifying the whole approach of designing various sections. Thanks to Bootstrap and various code simplification technologies, frontend developers are left with the only concern of finalizing the layout and appearance of the website by given graphic design. 1.4 Design Patterns Every web framework used for the creation of extensive web applications stands on a given design pattern. These patterns represent solutions for common problems and implement ideas for dealing with them. Not in a meaning of a part of the source code or additional library but as a template describing the approach to the solution in various situations. There are various types and levels of design patterns. For example the MVC architecture 6

15 1. PROBLEMATIC AND BASIC TERMS is the architectural level of design pattern, SOA is service oriented architecture and there are other component based architectures on a principle of visual and no-visual components and their attributes. This paper focuses more on MVC architecture, because it is recommended for easy introduction to design patterns thanks to its flexible and clear logic architecture Model View Controller The MVC architecture consists of three kinds of objects. The model is the application object, the view is its user interface and screen representation, and the controller defines the way the user interface reacts to user input. Before the introduction of Model View Controller, the user interface was usually strongly connected to the application objects which decreased the flexibility MVC now provides. [6] Figure 1.1: MVC architecture MVC divides models and views by establishing a subscribe/notify protocol between them. A view must ensure that its appearance reflects the state of the model. Whenever the model s data changes, the model notifies views that depend on it. In response, each view gets an opportunity to up- 7

16 1. PROBLEMATIC AND BASIC TERMS date itself. [6] Dividing mutually related parts lead to fairly connected units which leads to much simpler and better maintained code. MVC also allows to change the way the visual interface responds to user input without actually changing its visual presentation which is one of many features that make this architecture very popular among web frameworks, such as Ruby on Rails, Nette, Zend or Django. Applications created with MVC architecture are flexible and clear Component Based Architecture Component based architecture is a reuse-based approach that separates the concerns of system s wide-ranging functionality into loosely coupled components. These components are triggered on specific component events and application logic functions. Component events may alter the attributes of given component or trigger application logic functions. Once user interface components are defined, application logic functions are programmed in a manner of classic methods with input attributes that alter component behavior. The database connection is provided either with application logic functions or via connecting database to given non-visual component that is inserted directly within the user interface context. Frameworks such as Vaadin, Flask or Google Web Toolkit are build on this architecture principle. First two of these frameworks are examined in this paper. 1.5 Programming Languages Programming languages are considered one of the main choosing criteria when deciding which web framework to use. Design patterns, architectures and other approaches to development may be overcome by complexity or basic knowledge of a certain programming language. Even though the front-end is usually bound to pure HTML and CSS, the programming language approach on the core of the framework may be very distinctive. The programming logic is usually written in typical scripting languages, such as Javascript or Actionscript, or in a specific programming language given to the framework. However, each programming language may have different impact on the requirements of server which will the application run on. The criteria for choosing the right language are also an important skill for a developer. Some programming languages are easier to learn than other, which may represent a much higher cost in language adaption. Such prob- 8

17 1. PROBLEMATIC AND BASIC TERMS lematic also applies on the amount of code the programmer needs to process while adapting on a new framework. The cost for learning and understanding a new programming language may be higher than effort given in creating a more complex application structure in a language already known by the developer. Therefore an extensive documentation of a specific language based framework is significant for choosing criteria PHP PHP, which is originally a script language, has become the most used scripting language for web with a share of almost 82 %. [8] It has become popular mostly thanks to its easy usage and large amount of functions. PHP also works great with HTML since it is easily interchangeable with it and thus makes a great introduction to web application programming for beginners. Also most content management systems such as Wordpress or Joomla are written in PHP. Apart from other language based frameworks, that tend to stick with usage of older, yet more certified properties (Such as Ruby or Python), PHP community grasps every new framework and is willing to move on to something new and more powerful rather than using older frameworks such as Zend or Symfony. These frameworks are still widely used, yet approaches of newer solutions differ, giving developers much to chose from. PHP frameworks analyzed in this paper are Laravel, Nette and Phalcon Ruby Ruby is a fully object, interpreted script programming language. It was developed in 1995 by Japanese programmer Yukihiro Matsumoto, who intended to create purely object language that would be easy to read and use, yet would still be able to compete with languages such as Perl or Python. At first, Ruby was not getting the popularity it deserved due to lack of proper English documentations. However, now it has been grasped by developers all over the world mostly thanks to the success of the Ruby on Rails framework. Ruby s community is growing day by day mostly thanks to many Ruby based projects on GitHub. By far the most used Ruby based framework is Ruby on Rails. It has been developed and adjusted since 2004 and is still enhanced with new functionality with every new release. Many frameworks (not only Ruby based) tend to copy its properties and transcend it to their language based frameworks. Even though Ruby on Rails is not a recent framework, it is still 9

18 1. PROBLEMATIC AND BASIC TERMS considered modern, since it is still broadly used and developed by a large community. Ruby based frameworks analyzed in this paper are Ruby on Rails and Padrino Python Python is a dynamic, object oriented script programming language, created by Guido van Rossum in [20] It is a simple, interpreted language with minimalistic syntax that supports indentation. Python is developed as an opensource project, offering free installation packages for all main platforms. In most Linux distributions, Python is included in the operating system package. It has become popular mostly due to its easy syntax being a useful tool in introduction to programming. Python is a hybrid language, meaning it allows to write programs using object oriented paradigms, as well as procedural and even functional paradigms. It is easily embedded and thus can work as a scripting language among other programming languages. Most usable and valuated web frameworks written in Python are Django, Flask or Bottle. This paper analyzes first two of mentioned frameworks Java Java is a class-based, object-oriented programming language for general purpose. It was specifically designed to have as few implementation dependencies as possible to maintain maximum portability between devices. It is one of the most used object oriented programming languages particularly for client-server web applications. Java s syntax is derived from C and C++ but it has fewer low-level facilities than either of them. Building web applications in Java has become popular since the introduction of Web 2.0. This was a result of Java based Frameworks starting to be developed and quickly grasped by the programming community. Even though nowadays many modern frameworks are being introduced, developers tend to stick with the most extensive frameworks for building web applications such as Spring MVC or component-based JSF, mostly for the reasons of tested standards. Three alternative Java based frameworks were chosen for analysis in this paper. Grails represents older, yet widely used and highly valuated framework and Vaadin and Play were chosen to represent the younger generation of Java Frameworks. Even though Grails is written in Groovy, which is a language based on Java platform, it is considered a superset of Java, since almost any valid Java code is also a valid 10

19 1. PROBLEMATIC AND BASIC TERMS Groovy code. Java is the most commonly used approach for large systems such as enterprise software, including network and web services, and other large-scale, reliable, and secure network applications with multiple tiers. 1.6 Selection of Comparison Form To simplify the comparison of different web frameworks and to clearly point out their basic pros and cons, it was necessary to choose valid comparison criteria. Such criteria that are common for every researched framework are important for describing its key values in a manner of words based on the short time period of testing usage. The criteria were chosen in a way to be easily valued by the developer deciding which web framework to use for their web application according to simplicity and comfort of usage Comparison Criteria Application development speed The most important criteria, describing the amount of time needed by the developer to create a working application. It covers the amount of effort and generated and written code needed for the core parts of the application. Some frameworks allow to write extensive e-shops in a manner of hours, some in weeks. Learning curve Defines the complexity of the framework structure and reflects the time needed for learning the programming language and understanding the development procedures. Documentation and community support Proper documentation is also an important criteria, because dealing with an issue in the application with no support can represent an extensive problem. The criteria covers written books on the theme, e-books, manuals and e- support. Also, modern frameworks are now maintained by stable communities of programmers often willing to find the best solution and help with problems on community forums. Code length Describes the physical length of the framework code needed to be written or adjusted. Reflects the amount of automatically generated code, because it is important that the procedures that were written many times before are not needed to be rewritten again with every new application. 11

20 1. PROBLEMATIC AND BASIC TERMS Application speed Reflects the time in which the application is able to react to user tasks or complex calculations. Usage Most of the usage complexity is defined by the developer and by the way the application was written. Some aspects however, are common for the given framework and might represent either an obstacle or a convenience. Stability Describes the application security and resistance against external influences such as slow internet connection or low server performance. It also covers framework s resistance to attacks such as cross-site scripting or cross-site request forgery. Function extensibility Indicates a range of technologies that can be connected to the application and extend its functionality in any way. Evolution Every application should consider future usage or change of user requirements that might be implemented to the application after a long time use. This criteria reflects the amount of time needed for such adjustments. License Reflects whether the framework is opensource, or whether its code is proprietary. Requirements Describes various requirements on the server that is running the framework, as well as on the user machine. Responsivity Since nowadays the usage of web browsers is oriented mostly on mobile devices, it is of help that web frameworks do not lack the possibility of creating responsive layouts. This criteria covers whether the framework provides any tools, functions or simplifications for creating web applications layouts for mobile devices. Multiplatform support Extent of devices (Operating systems) the framework is able to run on. 1.7 Chapter Conclusion First chapter introduced the reader to the the web application problematic and showed the basic definition of terms used in building a web application using web frameworks. Modern code simplification technologies were 12

21 1. PROBLEMATIC AND BASIC TERMS briefly described, as they can be used in combination with the chosen development approach. The comparison form was defined as a list of verbally described attributes used for evaluating the properties of a given framework. These criteria are applied in the next chapter. 13

22 2 Framework Analysis This chapter focuses on evaluating frameworks using the chosen comparison criteria. Each framework is briefly introduced and tested on a simple application determining its key properties as well as its way of usage and system requirements. Last part of the evaluation consists of applying the given criteria on framework s properties and determining a conclusion. There is a large amount of frameworks currently being used for developing modern web applications. The sample chosen for analysis in this paper therefore consists of frameworks that are largely used, have a good user feedback and are repeatedly listed in popular framework articles. The selection of analyzed frameworks was based on various surveys and user experience reviews on popular programming-oriented websites. Surveys showed that users are usually depending on the framework they write on their own and that other users tend to make the choice based on their programming language experience. [8, 23] The sample chosen for evaluation in this paper therefore consists of frameworks with high user ratings, written in different programming languages. PHP is by far the most used programming language for web application development and thus represents a large part of conducted framework selection. [12, 14, 24, 26] Java frameworks are also very popular mostly thanks to the language s general usage. [13, 18] Rest of the framework sample is distributed between Ruby and Python based frameworks that are also broadly used mostly by Unix based web application development communities. [15, 16, 20, 27] 2.1 Laravel Laravel is a modern web framework, based on Symfony, used for building strong and extensive web applications in PHP. It was developed by Taylor Otwell in 2012 and thus is considered rather young framework. Laravel has become one of the most popular PHP frameworks thanks to its roots in Symfony, Composer, Blade, etc. Even though it has been used and maintained only for several years, it has won the admiration of many PHP developers that were used to work with frameworks like Symfony or Cake PHP. Laravel combines the strength of these frameworks with certified procedures inspired by technologies such as ASP.NET, Sinatra or Ruby on Rails and transforms them into PHP syntax. Such synthesis creates a powerful tool for developing strong and extensive applications fast and using modern certified approaches. Laravel stands purely on MVC architecture and is 14

23 2. FRAMEWORK ANALYSIS distinguished primarily by its real world optimization and the fact that it goes towards developer issues that matter Framework Usage and Properties Laravel s community provides nice and clear tutorials that help users get to know the framework well. Properly structured documentation covers the installation, introduction to packaging system and explanations for basics such as routing, middleware, controllers and views. After learning the basics, users can navigate through the documentation that describes services, architecture, foundations and databases, all of which is well interpreted along with code samples being provided as well. Support for new users is very extensive. Laravel also provides a website laracasts.com that features hours of commented video tutorials both free and subscribed. The framework utilizes Composer, a popular PHP dependency manager, to manage its extensions. Therefore it needs to be installed on the developer machine in order to run Laravel. As mentioned above, Laravel stands on the roots of strong PHP frameworks combined with certified procedures inspired by technologies of different languages. One of such procedures is managing the dependencies through a packaging system. Composer allows users to work in a console and with a way that is very similar to gem packages in Ruby, they can manage dependencies simply by requiring the given packages in the application. These packages may contain tools for various forms, authentication, PHP frameworks etc. Code reuse is one of the greatest head starts in web application development and Laravel allows to use it in a certified way as well as automatically generated code for controllers or views. One of the features of Laravel is its exceptional Object Relation Mapper which can be also used as a standalone ORM even though it was first developed for Laravel. The eloquent ORM provides ActiveRecord implementation for working with the database creating a model for every table and allowing to interact with it. Laravel also includes a database schema builder which is a class that allows manipulating database tables in agnostic way. Managing tables is therefore possible simply via PHP code and does not require any database management tools. These schemas are typically paired with migrations that allow developers to modify the schema of the database and stay up to date on the current state of the schema. Laravel also allows to adjust the settings of the development environment as much as possible using its own Vagrant virtual machine package. The package is called Homestead and includes Ubuntu 14.04, PHP, 15

24 2. FRAMEWORK ANALYSIS MySQL, PostgreSQL and other useful utilities, such as Laravel s own task manager. Homestead is used for creating the most comfort development environment, that can be then connected to via SSH 1. Users then don t have to install PHP or any database, but after proper Virtual Box 2 and Vagrant installation they can install Homestead simply using Composer. This approach can simplify the portability, however running Laravel on an own PHP server can provide compatibility and requirements problems that may be difficult to solve on Windows and Mac systems. Syntax in Laravel is rather expressive and on a first look, it appears to be clean and well readable. It is also understandable and easy to learn. The difference can be in the Controller-View combination that has to be stated manually for the position of the content as well as for the other position models. In combination with with managing the database, routing and configuration, it can be quite confusing for beginner developers. The syntax itself however, is handled well Comparison Criteria Application development speed Fast. Since Laravel combines code reuse using packaging system with generated code. Combining views with controller and routing can be a little time consuming, however database management is very fast. The most time consuming part may be represented by the initial design of application and its configuration. Learning curve Very good video tutorials along with a very nice structured documentation provide a perfect start with Laravel. However as an introduction to web frameworks logic and packaging systems, Laravel can get confusing at first. After grasping the basic aspects and methods of the development, learning is very fast. Documentation and community support Documentation in Laravel is well structured, organized, and along with the very active community provides a perfect combination of user support. Code length Standard. The code itself is nicely structured, yet it is dispersed in many files and folders in comparison to other frameworks. 1. A cryptographic network protocol to allow remote login and other network services to operate securely over an unsecured network. 2. An x86 virtualization software package developed by Sun Microsystems. 16

25 2. FRAMEWORK ANALYSIS Application speed Application speed is fast. Laravel ended up very high in the recent framework speed test. [10] Usage Thanks to packaging system and managing dependencies through composer, the overall usage of Laravel is very good. The only downside can be the file structure orientation. Stability Very good. Laravel proved to be very robust web framework. And many security dependencies can be included using Composer. Function extensibility Very high, thanks to dependency management. Evolution Evolution in Laravel is very good thanks to its database system properties. Migrating and Schemas allow to manipulate already stable databases easily. License Laravel is released under the MIT License, with its source code hosted on GitHub. Requirements Besides the newer versions of PHP, Laravel requires Mcrypt PHP Extension, OpenSSL PHP Extension and Mbstring PHP Extension. Responsivity One of the main front-end dependencies is the support of Bootstrap and Elixir that support layout responsivity on a full scale. Multiplatform support All main operating systems are supported, however, Linux based systems are preferred due to their easier configuration Summary Laravel is one of the strongest modern tools for building web applications. It can be used for developing extensive systems as well as blogs and content management systems (CMS). It is also one of the most popular frameworks of 2015 and thanks to its community and opensource license, it keeps being developed based on the requirements of skilled programmers that work with it every day. PHP developers want to make sure that it is perfected in every manner with an aim to make it the best tool for creating web applications. Laravel can be a little harder to learn for beginner web developers, 17

26 2. FRAMEWORK ANALYSIS but after grasping the basic functionality, learning it is very fast and it is possible to build simple dynamic websites with it, even with lack of extensive programming skills. Laravel is a very versatile framework and thanks to its extensive amount of plugins and components it can be used to create extensive social networks, e-commerce websites or large video galleries. It may also work with smaller applications even though they still have to be properly configured. 2.2 Nette Nette is an opensource framework for easy development of web applications in PHP. Its original author is David Grudl, but it is now maintained by Nette Foundation organization, which is a group of individual programmers that have been developing and providing the support for the framework since [7] Nette is popular mostly between beginner programmers thanks to its simple usage and introduction. Major part of support and information is available in Czech language, thus making Nette one of the most popular frameworks among Czech developers. It was written in a way that it was easy to use and gave the developer an efficient and understandable syntax that would allow them to learn the framework faster. It implements event driven development and it is mainly based on component usage. The design pattern of Nette, Model-View-Presenter is very similar to MVC. Model represents the layer working with data that is completely separated from the rest of the application and communicates only with presenter that notifies the views of database changes. Nette is known also for its focus on safety risks elimination and advanced application security Framework Usage and Properties Nette s homepage provides nice and clear introduction to the framework using structured tutorial for basic blog application. Every step of the learning process is described alongside with the part of the code provided. The installation package includes a requirements checker tool that helps the user validate the resources for the installation. Unlike other modern frameworks, the development process in Nette is built in a way to minimize the configuration and focus on the important parts of the application logic. Nette provides its own database manipulating system known as Adminer. It allows to create databases and manipulate tables just as any other database admin system, but it also allows to automatically create foreign 18

27 2. FRAMEWORK ANALYSIS keys between tables using table name as data type for argument in another table. This function in Nette\Databases is called Selection-API and saves the developer much time when creating table relations. Nette\Database uses foreign keys for solving table relations and thus automatically creates database queries. One of the main advantages of Nette are its security-hole elimination technologies. It allows to automatically prevent cross-site scripting using its context-aware escaping technology that automatically escapes all dangerous input characters. Even though such attacks are usually the most trivial, there are also the most common. Nette also allows to protect forms against cross-site request forgery which allows the attacker to exploit the website user is currently logged in. Every form in Nette can be protected by a single command. Many other forms of attacks such as URL attacks, control codes, invalid UTF-8 or unwanted session manipulations are automatically prevented. The form functionality is described in Nette s documentation and contains many custom security commands creating Bulletproof forms. Nette provides two server running modes. The development mode focuses on offering the programmer as much information about application speed, routing and error logging as possible. In contrast, the production regime pipes error logs into a log file hidden from a basic user. Other useful Nette tools that can also be represented as standalone are its template system and debugger. Latte is a template engine that transforms often hard to read PHP and HTML syntax into well readable code structure. Using custom macros, Latte allows to write organized loops, conditions or various custom commands in a HTML-like manner, yet still providing mentioned security and automatic variable escaping. Nette s debugger, Tracy, then allows to quickly detect and log errors in the code in a userfriendly visualized manner. Nette s support of AJAX is also very extensive and easy to configure. Developer defines so called snippets that represent pieces of the website to be refreshed after given action. Thus allowing to create a dynamic table of contents, directly connected to a database, in a manner that its contents can be manipulated with on a client side without refreshing the browser window. Nette s file structure is copying the architecture of MVC, dividing folders to application folder, which contain presenters, views, models and custom components. Rest of the file structure consists of front-end www folder with JavaScript, CSS and various addons and a vendor folder containing the framework files and plugin files. However, users can manage the application folder systems to their needs as long as they use proper name-spacing in the begging of class headers. This simplified file structure, along with 19

28 2. FRAMEWORK ANALYSIS a plain configuration file and router, create a well organized introduction to web application frameworks to every developer. Even though Nette does not have as large support of scaffolding as Laravel, it is now distributed as a set of reusable independent components that can be used in the initial framework package. Users can define the extensions they want Nette to include or simply use its standalone components such as Tracy debugger. Same as Laravel, Nette may use Composer for managing its dependencies and extensions Comparison Criteria Application development speed The application development is rather fast even without the support of scaffolding. Every view is followed almost only by the presenter and model code and managing database structure is faster thanks to Selection-API. Also Tracy debugger allows to discover and describe errors very fast. Learning curve Learning Nette is very easy thanks to well organized file structure, easy configuration, introduction tutorials and well structured guides found on the framework s website as well as on Nette s Youtube channel. Documentation and community support Nette has an active community support on its home forums, which are mostly in Czech. Its website contains nicely structured guides to different parts of the framework. Programmer s guide is well organized and visually represented in comparison to other frameworks. Code length Short even though code generating is not supported. Nette provides broad functionality automatically. Application speed Several years ago, Nette was one of the fastest frameworks. [9] Nowadays, however, it has been outran by much faster PHP frameworks such as Phalcon. [10] Usage Usage of Nette is very good. After creating first couple of models and presenters, their interaction becomes almost an automatic task. Stability Very good. Nette is known to be one of the frameworks with the highest security not only in forms. 20

29 2. FRAMEWORK ANALYSIS Function extensibility Nette has a large base of addons, plugins and components based on its website. It can even be combined with Zend framework and maintained through Composer as well as Laravel. Evolution Evolution in Nette is rather easy thanks to its simple architecture and easily manageable database system. It leads the developer to well designed applications that support future extensibility. Requirements Besides basic PHP extensions such as PDO extension and Bundled GD extension, Nette does not have any special requests on the PHP server. License Nette Framework is shared as a free software for anybody to use. It allows to choose between New BSD and GNU General Public License. Responsivity No responsivity for Nette is supported in the basic version. However, it can be extended with layout modifications allowing further mobile device support. Multiplatform support All main operating systems are supported Summary Even though Nette used to be more popular a several years ago and its fame is now outran by newer frameworks, it has been included in the paper mostly because of its popularity among Czech developers and its fantastic learning process. It is a well built framework that is secure and very easy to use and learn. It provides tools to simplify the development as much as possible and focuses on supporting its new users. It is good for developing smaller e-commerce sites, wikis, blogs or CMS. Creating a larger application with more complex structure can be time consuming due to lack of generated code and straightforward framework structure. However, Nette is capable of running large sites with easier structure. It is used by websites such as Csfd.cz or Bandzone.cz. 2.3 Phalcon Phalcon is a high-performance web framework for PHP based on the MVC design pattern. It was originally released in 2012 and it is licensed as open- 21

30 2. FRAMEWORK ANALYSIS source under BSD license. The main difference that distinguishes Phalcon from other PHP frameworks is its speed of processing requests. According to many independent tests, Phalcon was stated as the fastest PHP framework so far. [10] Apart from other PHP frameworks Phalcon is written in C and implemented as PHP extension in order to optimize the performance. One of the disadvantages of PHP is that all files are read from the hard drive, translated and then executed on every request. This issue causes a high performance loss against languages such as Python or Ruby, whose processing speed is much higher. Since Phalcon is interpreted as a PHP module, the whole framework is already situated in RAM, resulting in a large set of files not needing to be processed. The developer is working only with PHP and does not have to expose the core written in C. The performance of web applications was not described as one of the top priorities. However in 2010, Google decided to take site speed into account in the search rankings which increased the interest to bringing out the performance of websites to the maximum. [11] Framework Usage and Properties Phalcon offers the classic PHP MVC framework functions such as routing, controllers and view templates, cashing, basic ORM etc. Its website describes the framework as very easy to use and learn, however, the speed is its main advantage. Since Phalcon is interpreted as a model, the installation is very fast and easy on every system. Linux and Mac users simply install the module using the console and Windows users download the dll file and implement it in php.ini configuration file. Phalcon s website offers a broad installation and compilation guides for all systems and servers such as WAMP, XAMPP, Apache, or Cherokee. Structure of the project file is very straightforward. Since Phalcon works as a module, it does not require any library table and therefore the file structure tree consists only of the app folder containing controllers, models and views and a public folder containing all of the CSS, JavaScript and HTML. The main functionality is operated through the bootstrap file and since Phalcon is loosely coupled, the file structure can be altered to user s comfort since every file is accessed via the bootstrap that is called on every request. The controllers and models are autoloaded and can be created anywhere in the project as long as they extend the given parent functions PhalconMvcController and PhalconMvcModel. Extending a class using these functions automatically provides the functionality of models (such as find() 22

31 2. FRAMEWORK ANALYSIS or save()) or controllers. The code itself is very straightforward and does not require any further investigation. Views on the other hand, do not implement any templating system such as Blade or Twig. PHP is hardcoded directly in the HTML within the tags and even though Phalcon provides functions such as built-in flash messaging, this approach is not very well interpreted. Phalcon has its own ORM, Phalcon Query Language (PHQL) which can be used to make database interactions more expressive. PHQL can then be easily integrated with models to define the relationships between tables. It also allows to write raw SQL queries with variables or use a more structured query builder. An excellent feature that Phalcon provides is Phalcon Developer Tools (PHDT). These tools represent a collection of useful scripts for generating the project skeleton, controllers, preparing database settings, generating models and scaffolding. It also includes the usage of packages in web interface, making the front-end debugging faster. These tools allow to increase the speed of the development and extensively reduce written lines of code. The syntax itself is easy to read, especially the MVC code. Configuration files, however, come with a slightly different PHP syntax that may be hard to understand at first. The whole C package disguised as PHP works very well, even though it may cause trouble for PHP developer to debug C if a major problem occurs Comparison Criteria Application development speed Without PHDT, the development speed would not be as high, however thanks to custom file structure and PHQL, the files can be easily organized. Phalcon s development speed is rather fast. Learning curve Phalcon s website focuses user s attention to its screencasts, which are not very helpful, showing only a couple of videos that are not very informative. Learning through the tutorials can be tricky due to the differences in server configuration even though the tutorials include pieces of code. Phalcon also allows the possibility of trying the framework online directly in the browser. Learning curve itself is not that steep, but since Phalcon provides a free hand to the user, tutorials are not needed as much as documentation. 23

32 2. FRAMEWORK ANALYSIS Documentation and community support Documentation in Phalcon is very extensive and provides solutions for all systems. Even though Phalcon is a rather young framework, the community on its website is alive and willing to help with the framework functionality as well as with possible C debugging problems. Code length Again, thanks to PDT, the code length shortens, even though the amount of code is rather average. Application speed Phalcon is very fast. Thanks to its core being written in C, its request processing speed is beyond any other PHP framework. Usage Average. Apart from the fact that Phalcon is the fastest, it can be stated as another usual PHP framework. Also, handling of the view code is not very good. Stability Apart from basic password hashing and cross-site request forgery protection, Phalcon does not provide any further security extras apart from third party security plugins. However applications are stable thanks to the MVC architecture. Function extensibility Phalcon is still rather young and its extensibility is based on other PHP extensions. Evolution Phalcon s ORM allows to transform databases without any major problems. Requirements Apart from newer versions of PHP, Linux and Mac installations of Phalcon require GCC compiler, Git for installation or XCode. License Phalcon is opensource, under the BSD license. Responsivity No layout responsivity for Phalcon is supported. Multiplatform support All main operating systems are supported Summary Even though Phalcon s performance is many times higher than with other PHP frameworks, it is still a young project that is overshadowed by extensible frameworks such as Laravel or Symfony 2. It can be very suitable for web applications that need fast responses and good request handling 24

33 2. FRAMEWORK ANALYSIS speed, but for simpler applications, it would be easier to use Nette or Symfony. However, Phalcon offers a great documentation, very live community that is still developing it and it follows standard MVC pattern and thus it is still one of the most popular modern PHP frameworks. 2.4 Ruby on Rails Ruby on Rails (ROR) is an opensource MVC oriented framework for building web applications using Ruby language. It was originally developed by Danish programmer David Heinemeier and since 2004 it has been maintained by Rails Core Team. Now it is one of the most used and highly rated web frameworks among Ruby developers. [16] ROR s principles stand on the rules Convention over configuration and Don t repeat yourself, meaning, that developer needs to configure only the parts of the application that differ from usual settings. ROR s strongest feature is its scaffolding and extensibility. Since there are many certified approaches of building various system modules, ROR focuses on converting such models into templates, that can be easily generated and inserted into the code, leaving the developer with only minor choices of adjustments without needing to rewrite the whole structure. Extensibility in Ruby on Rails is provided by dependency management system known as gems, which can be implemented in the application by being downloaded and installed using one simple console command. These features make Ruby on Rails a very powerful tool for building web applications with agile approach Framework Usage and Properties ROR s agile development support is approached by the consistent adherence to the specifics of the MVC model. The application structure consists of views that provide basic MVC functionality. It can also be extended by further code simplification technologies by simply installing gems such as HAML or Bootstrap. Controllers combine application logic scripts with content passed from the model. Managing the application data through ROR s model mapping allows full control over the database. Tables, including data structures, types, limitations and dependencies, can be generated easily via simple console commands. Created table is then converted to a class where each line of the class represents an object instance. Ruby s gems also provide many further extensions for database manipulating and thus making its management even simpler. 25

34 2. FRAMEWORK ANALYSIS Controllers in ROR are closely connected with URL maps which map the project s URL to relevant views and controllers thus securing that application URLs are adapted to logically express the part of the application that is current for the user. Making URLs attractive, search engine friendly and easier to remember. As mentioned above, one of ROR s strong features is the console navigation. It allows to install ROR gems, create new project skeletons, generate new models, views, controllers to a given project as well as a block of code using scaffolding. The console also allows to debug the application. Naming objects when using scaffolding is represented using pluralization, thus making the development more real-life-like. Naming objects in English is thus recommended. Application deployment does not require any compilation even though the best solution would be having the server run Ruby on Rails by itself. Such solution allows the easiest application manipulation and configuration. ROR can be run on HTTP servers by installing the given module. Even though, Ruby on Rails offers such extensive functionality, easy management and fast development, it is not used by developers as much as PHP frameworks such as Laravel or Symfony. It can be explained by the fact that it may not be not so easy to learn Ruby language for developers that work entirely under the classic HTML / PHP structure. Ruby was created to be easy to write, but at first, its functionality and approach must be understood for it behaves differently then other script languages. Also for developers that commonly use other languages, Ruby s syntax can appear very confusing at the first sight due to its unique structure. However, Ruby has a great developing community, well described documentation and many books have been published about various approaches of ROR based web development Comparison Criteria Application development speed Very fast, especially for light applications, thanks to scaffolding and command line based generated code. One of the advantages when using ROR is not having to deal with complicated database connections. Learning curve For a developer that already knows Ruby, it is very steep. For other users it can be hard to understand the functionality of the language first, because it differs from other languages. 26

35 2. FRAMEWORK ANALYSIS Documentation and community support Communities around Ruby on Rails are very much alive and willing to help other developers. Documentation is extensive and there are many books and web pages available for information. Code length Very short. Skeletons and modules can be generated and thanks to Ruby s clean syntax and other gems providing code simplification technologies such as HAML, the amount of written code is very low. Application speed Since Ruby is interpreted, the speed is not that high. On the side of the client it may be altered by various JavaScript usage. Usage Working with the framework itself then proves to be easy. Almost everything can be handled by gems or be easily generated. Stability Again, since ROR is very extensible, many security and stability gems are available for including in the framework. Applications do not have any restrictions towards the external influences. Function extensibility Thanks to gems, ROR has a very good dependency management system, the extensibility is excellent. Evolution Very easy. All it takes is to alter the source code and the rest is provided automatically. Nothing needs to be compiled. Requirements Ruby on Rails or a module for using the Ruby language have to be installed on the server in order to run the application. License ROR is opensource, shared under MIT license. Responsivity ROR supports gems for templating system, directly interdependent with front-end responsivity. Multiplatform support All main operating systems are supported. However, configuration is much more difficult on Windows systems, and some of the gems are not supported by it Summary Ruby on Rails is a very good way of building lightweight web applications in agile manner, yet it is not very suitable for building extensive thick client 27

36 2. FRAMEWORK ANALYSIS graphic web applications. It excels mostly thanks to its packaging gem system and extensibility as well as thanks to its very fast development. The only obstacle for grasping its functionality is to very well understand Ruby language. Similar approaches that ROR provides were used in developing Laravel framework which can be represented as a PHP alternative to Ruby on Rails even though it still does not have such large extension support. 2.5 Padrino Even though Ruby on Rails is the highest rated and most used framework among ruby developers, it may not be suitable for every type of application. Many framework alternatives written in Ruby are available and developed on GitHub, trying to follow a rather different approach of Ruby based web application developing. One these frameworks is Padrino, an opensource ruby based web framework built on Sinatra. Sinatra is a very lightweight microframework, or rather a domain specific language (DSL) used for building light web applications. Sinatra is known for its higher speed in comparison to ROR s bulkiness, since it is very small sized and instead of the MVC pattern, it maps the Ruby code directly on the URL making the creation of APIs and applications easier. In Sinatra, a route is an HTTP method paired with a URL-matching pattern. It proven to be a well built alternative to ROR yet still being a very lightweight, Sinatra could not compete with Rails in more extensive applications and the lack of functionality such as database interaction. Even though Sinatra is still broadly used, mostly for its light weight, that gives enough freedom to developers, Padrino was created in order to extend the functionality of Sinatra into a solid framework Framework Usage and Properties Padrino was created as opensource framework in 2010 by Nathan Esquenazi, Davide D Agostino and Arthur Chiu and is now developed and maintained on GitHub. Their goal with Padrino was to stay true to the core principles of Sinatra while at the same time creating a standard library of tools, helpers and functions that will make Sinatra suitable for increasingly complex applications. [17] Padrino takes rather agnostic approach in comparison to pure Sinatra, offering functionality such as the full support for many popular testing, templating, mocking, and database libraries. It offers simple project skeleton generation by typing commands into the console. This way, same as 28

37 2. FRAMEWORK ANALYSIS with ROR, models, controllers or views can be created. Even though Sinatra is not based on the MVC pattern, Padrino stands on its main purpose and is combining it with certified MVC approaches such as dividing the folder tree structure. Also unlike Ruby on Rails, Padrino is principally designed for mounting multiple apps, meaning that Padrino project directory can easily mount multiple applications. Padrino itself is a set of modular extensions for Sinatra. [17] These extensions can be represented as standalone by themselves, and installing Padrino gives users the opportunity to choose which extensions to include in the Sinatra installation, and therefore, how much freedom they want to be given. This version of Padrino installation is intended to be used for applications that have already been built and that would benefit from a particular aspect of Padrino such as a mailer or view helpers. One of the features Padrino provides is the Admin interface that can be created by providing a single model. Padrino s admin also grants a single model account for managing roles, memberships and permissions, ORM agnostics and multilanguage support. Using Padrino can be tricky due to a lack of proper tutorials. Understanding and grasping the knowledge of Ruby language on a higher level is important. Also, learning Sinatra is one of the Padrino usage assumptions. The framework itself acts more as a collection of intermediate components, but the application deployment is easy and the result projects are stable and working fast. Since Padrino s extensibility is not very limited, it represents a powerful and elegant tool in building applications and APIs in Ruby that can offer the same functionality as Ruby on Rails Comparison Criteria Application development speed Very fast, especially for light applications, thanks to scaffolding and command line based generated code. Learning curve Same as with ROR, understanding Ruby is necessary, as well as being able to work with Sinatra. However, Padrino s developing approach can appear rather complicated before being completely grasped. In comparison with ROR, the syntax does not seem as clear and it can take time for users to understand it. Documentation and community support Tutorials and guides for both Sinatra and Padrino are not as extensive as it is with other 29

38 2. FRAMEWORK ANALYSIS frameworks. However, the community and documentation support are very good. Code length Short, depending on the amount of components used, but ability to scaffold and generate code skeletons relieve the developer from writing large amounts of code by themselves. Application speed Although the Padrino framework is built on Sinatra with a lot of helpful features, like in Rails, its performance is still close to that of a clean Sinatra application. [19] Usage Padrino s usage is rather average. The level of Ruby knowledge highly affects the framework usage. Stability Padrino offers many security gems and components and its authentication works very well. Function extensibility Extending Padrino applications is the same in a way of installing ruby gems and the Sinatra itself provides a large amount of available components. Evolution Good. Padrino provides many different ORM tools for manipulating the database structure well. Requirements Server needs to be provided with Ruby interpreter, Ruby or any other Ruby such as 1.8.7, Rubinius, or JRuby. RubyGems package is also needed. The installation includes all other needed dependencies. License Padrino is opensource, shared under MIT license. Responsivity Padrino supports templating gems that provide layout responsivity. Multiplatform support All main operating systems are supported. However, configuration is much more difficult on Windows systems as well as some gems are not supported by it Summary Padrino gives the developer the freedom of Crafting their own framework based on Sinatra functionality. It preserves Sinatra s compact and fast developing approach and wraps it with extensive functionality, which creates an independent, adjustable and strong framework. It can be harder to 30

39 2. FRAMEWORK ANALYSIS grasp, but in the end allows to create both smaller and larger fast applications and has proven to be a quality alternative to Ruby on Rails framework. 2.6 Django Django is the most used Python based web framework. It is opensource and stands on the base of slightly adjusted MVC pattern. Django was initially designed for content management of The World Company News website and later in 2005, it was published under BSD opensource license. [21] Django focuses on the development of complex web applications managed by database. It is a widely used Python web application framework that follows a philosophy called batteries-included, meaning that the main and extensive functionality should be included within the framework itself rather than as a set of standalone extensions or libraries. For example, URL routing, authentication, templating system or data schema migrations are included in the framework in contrast with frameworks such as Flask or Padrino, that believe in the exact opposite strategy that the framework should be as simple as possible and rather extendable. What distinguishes Django from other Python frameworks is a possibility to automatically generate the admin interface from the given database definition. Code generating in Django is highly supported and follows the same rules as Ruby on Rails, saying that, the best and fastest way to achieve the proper result is not to rewrite something that has been written before Framework Usage and Properties Over the past decade, Django application performance, stability and community have grown largely. Detailed tutorials and well structured user manuals are readily available on the web and in books. Also framework s functionality is growing with every new version, such as database migrations etc. Django s application logic is written in Python which may be quite difficult to learn through the framework itself, even though Django is a good way to start with Python based web frameworks, it is recommended that users have at least basic knowledge of Python syntax, its usage and properties. Unlike Ruby, Python may be easy to learn even for beginners, thus making the introduction into the web application development simpler. Django s architecture is based on MVC pattern, but it is divided into smaller parts providing the given functionality. The mediator part represents an ORM that provides relations between the database and models represented by Python classes. Foundation provides a low-level database 31

40 2. FRAMEWORK ANALYSIS access and entities represent data objects. Mediator works as an interlink between foundation and entities. These parts fall under the model pattern in MVC. Presentation part handles user interface and its requirements and control provides the application logic, but also contains views, that grant view switching on the base of HTTP requests. Application programming in Django follows the basic MVC pattern by editing view templates, providing application logic via controllers and manipulating data using ORM and database models. Many generic views are defined in Django, allowing to reuse components such as lists, forms or various page details. The key points thus remain as the definition of database tables, generating the conventional parts of the application using generic views, adding the rest of the application logic into controllers using Python language and defining the templates that will create the application layout. The finishing move may be the automatically generated administration based on the table structure. Additional features of Django include lightweight, standalone web server for development and testing, validation system for forms, a cashing framework and internal component communication system. Django also provides a designer-friendly syntax for rendering the information to be presented to the user via its own templating language similar to Nette s Latte Comparison Criteria Application development speed Very fast, Django combines the lightweight syntax with automatically generated content and custom templating language. Learning curve Rather steep. After understanding the basic syntax of Python, grasping Django is easy thanks to its extensive video tutorials, user guides and sample projects. Also the application structure is well organized. Documentation and community support Documentation is very good and well structured. Community is also very live and willing to help other users. Code length Python is known for its short and simple syntax and since Django allows to generate most of application structure and generic views, the code lengths is very short. Application speed Depends on the Python interpretation on the server. However low speed is not Django s issue. 32

41 2. FRAMEWORK ANALYSIS Usage Usage of Django is rather good, mostly thanks to the wellarranged application structure. Stability Django provides basic authentication and security measures, other security extensions can be installed separately. Function extensibility Many separate modules are available for Django even though it provides most of the functionality by itself thanks to the batteries-included philosophy. Evolution Nothing needs to be translated, only the code needs to be altered, evolution is very easy. Requirements Server needs to be provided with Apache server with Python module. License Django is opensource, shared under BSD license. Responsivity Older versions of Django did not support mobile layouts. However the newer versions are equipped with modules allowing responsivity. Multiplatform support All main operating systems support running and developing in Django Summary Django works well for the lightweight application development in Python. Using the high amount of scaffolding, its approach is similar to Ruby on Rails and allows to build applications fast and without deeper knowledge of the language. Python is easy to learn and grasping Django should not be hard even for beginner web application developers. Application deployment can be rather complicated especially for the thick client applications which Django is not very suitable for as well as for extensive graphic applications. However, Django still remains a very powerful tool for building web applications in Python and excels with its development approach and application structure. 2.7 Flask Flask is a lightweight web application framework written in Python. It is sometimes called a microframework, for it keeps its core simple, yet very 33

42 2. FRAMEWORK ANALYSIS extensible, following the exact opposite philosophy to that of Django framework. It was created by Armin Ronacher on April 2010 initially as an April fool s joke framework that consisted only of one single file. However it proved to be popular enough to make into its own application. [22] Flask does not have a form validation or database abstract layer. It follows the code to be as simple as possible with addition of extending the framework with modules and extensions almost like Padrino framework. Developers are not provided with a basic project structure skeleton, but they start with a blank page. The classic Hello World! Application can be written in a single file on no more than seven lines. Extensions for Flask exist for form validation, object-relational mappers, many various open authentication technologies, upload handling, and more. It is commonly used in combination with templating system and ORM, making it a full size framework, yet still very small and simple. from f l a s k import Flask app = Flask ( name ) Listing 2.1: Flask Hello World! route ( / ) def hello_world ( ) : return Hello World! i f name == main : app. run ( ) Framework Usage and Properties Flask is based on Web Server Gateway Interface (WSGI), which is a specification for universal interface between Python frameworks or web applications and web servers that is used for lightening the server requirements on Python based applications using a simple interface. Deployment of applications is easier than with Django thanks to Flask s own development server which is a part of its installation. Development with Flask is also made simpler thanks to its built-in debugger tool. Enabling debugging results in server reloading on code changes and providing its own synoptic debugger. Also, routing in Flask is very easy to configure. Certain parts of URL can be dynamically applied to a variable or a function, which results in creating URLs that are easy to remember by users and also programmable with no complicated configuration. Flask does not have any bootstrapping 34

43 2. FRAMEWORK ANALYSIS tools since it does not need them. From the above Hello World, a developer with no Python experience is able to start programming instantly. Generating HTML templates using Python can be complicated, especially due to frequent escaping. However, Flask comes in a bundle with Jinja2 templating system that is configured automatically and allows to render templates saved in the application. Jinja2 is a templating language inspired by Django. It provides more control over its execution environment and more advanced features than Django s default templating system. For example, it is possible to disable potentially dangerous features to safely execute templates that are considered untrusted or to compile templates ahead of time so that their validity is ensured. One of the security features that Flask provides is a support for secure cookies, on top with client side sessions, providing higher security when managing user roles since the cookies are signed cryptographically, meaning that user is able to look at the contents of the cookie but not allowed to modify it unless they know the secret key used for signing. Also unlike other web frameworks, Flask s file structure is rather elementary and consisting of very few files, still following the ideology of keeping everything simple and extensible. Even though building smaller applications with Flask is more suitable, it provides blueprints which is Flask s concept of modularity that can greatly simplify the work flow for large applications. Flask uses a concept of blueprints for making application components and supporting common patterns within an application or across applications Comparison Criteria Application development speed Developing small applications is always faster, however Flask takes this approach even further. Even though developers must write most of the code by themselves, the amount of it is very small, making application development speed very fast. Learning curve Thanks to easy configuration and simple structure, everything programmers need to see is still visible. It is also a great way to learn Python and understand web application development. Documentation and community support Flask is fully documented using Docstrings. Communities are very much alive and willing to offer support. 35

44 2. FRAMEWORK ANALYSIS Code length Code length in Flask is the shortest. It fully embraces the meaning of microframeworks. Application speed Even though it does not excel in speed (similar to other Python applications), it is completely sufficient. Usage Good. Flask s tutorials explain everything that is needed, even though fully grasping the framework requires some practice. Stability Basic security measures in Flask are well built, it can also be extended with other security modules. Function extensibility Many separate modules are available for Flask, making it very easy to extend. Evolution Nothing needs to be translated, only the code needs to be altered, evolution is very easy. Requirements Depending on the type of the server, it must be provided with certain modules for WSGI and Python installation. Flask itself depends on two external libraries, Werkzeug and Jinja2. License Flask is opensource, shared under BSD license. Responsivity Flask does not support layout responsivity. Multiplatform support All main operating systems support running and developing in Flask Summary Flask is perfect for learning the basics of web application programming. Even though it gives a very different development approach, it helps to understand the functionality of a web application development thanks to its simplified structure. It is effective for stand-alone applications and prototypes that need to be created quickly. It also has a very powerful web-based debugger and supports RESTful 3 URL routing. Flask is one of the most extensive microframewroks available and by itself, it provides a large amount of features that are worth applying. 3. Representational state transfer. A complex web service architecture providing requests for services using access URLs. 36

45 2. FRAMEWORK ANALYSIS 2.8 Grails Grails is an opensource merge of Java and Ruby based web development approach, written in Groovy (programming language based on Java platform). It is a robust and complex building tool for extensive web applications that has been developed since 2005 under the original name Groovy on Rails that was later forced to be dropped. In 2008, Grails was released as a stable version. The framework is a strong solution based on MVC pattern, following the coding by convention paradigm. Groovy is very similar to Java, with extended functionality provided by languages such as Ruby or Perl. It is characterized by its procedure chaining that (as in Ruby) allows to merge the output of a method with input of another method, good support for generating markup languages, or properties such as dynamic typing or operator overloading. Groovy is object oriented and can also be used as a script language for Java platform. Grails is a web framework that allows to effectively develop both dynamic websites and desktop applications and is focused also on back-end part of the applications Framework Usage and Properties One of the strong features provided by Grails are powerful and very easy to use templates for viewing management along with its well built ORM that provides direct database table mapping to objects. Grails also supports the possibility of connecting to Spring framework, which allows it to extend its functionality by many available plugins. It is easy to learn thanks to its Javalike syntax, clear guides and tutorials on its website. Like Django, Grails also allows to completely generate an administrator part of the application for any domain class using scaffolding. Same as Laravel, it tends to grasp the most used and verified properties of Ruby on Rails and transform it to its own language-based framework layout. Development in Grails is maintained by common MVC approach. Model classes (in Grails known as domain classes) are easily mapped on database tables thanks to Grails ORM provided by Hibernate 4. They allow to automatically generate the administrator section of an application thanks to contained database schema information. Framework controllers are written in Groovy, but allow to be easily connected with Java classes, therefore providing a good environment for Java programmers that are not yet com- 4. An object-relational mapping framework for the Java language 37

46 2. FRAMEWORK ANALYSIS pletely used to Groovy. Views are based on GSP (Groovy Server Pages) or JSP (Java Server Pages) markup languages, which can be represented as a HTML with additional special marks for stating controllers. Testing in Grails is well handled thanks to the possibility of testing every component of application easily. Since Grails handles the structure writing, mocking and configuring tests itself, only writing the actual test is left to the developer. Grails does not provide an authentication/authorization mechanism. The idea behind this approach is that users would generally use either Spring Security, Apache Shiro or the authentication plugin instead. This plugin, however, seems to only support authentication, and the rest is up to the developer to implement. Grails therefore relies on Spring Security or another security tool. Development interface in Grails is provided by maintaining the framework using a console or a lightweight server for needs of development. Grails is supported by NetBeans, Eclipse and IntelliJ Idea interfaces that allow it to be tested and easily maintained, expanding the support of the framework broadly. Same as with Java, Groovy needs to be compiled to bytecode, which can be then used with Java libraries or Java code. Result Grails application is compressed to a web application archive that is then deployed on the server. Resulting application then runs as thin client and does not require any extensions on a client side Comparison Criteria Application development speed Developing speed is rather average. Even though it can be fast thanks to scaffolding and generating interfaces, more complex applications require more time configuring. Learning curve Learning Grails is made easier by connection with Java. Allowing users to provide connections with Java classes and slowly transcending to Groovy syntax is a good learning tool. Also since Grails follows classic MVC pattern, it does not require any further knowledge of structure. Documentation and community support There is a large number of books, guides, tutorials that can be source of information for Grails. Community has grown since Grails is picked up by more developers every day. Also documentation support is good. 38

47 2. FRAMEWORK ANALYSIS Code length Short. Only large amounts of code are required on application logic. Grails follows Ruby on Rails approach in dealing with large amounts of code using scaffolding and additional features that Groovy provides make the amount of code even shorter. Application speed Depends on the interpretation of bytecode on server, however application speed decreases with its complexity. Usage Long term usage of Grails is good. Following MVC pattern in combination with Java-Ruby based approach make Grails very developer friendly. Stability Grails does not provide an authentication/authorization mechanism. It requires other security measures to be implemented by user or tends to rely on Spring Security or another security tool. Function extensibility Grails provide many plugins allowing to extend the framework s functionality. Evolution After every code alteration, the application must be translated and in a form of WAR file again transferred to server. Requirements Grails can be deployed on any server supporting Java. License Grails is opensource, shared under Apache 2 license. Responsivity Older versions of Grails did not support mobile layouts, this issue is now resolved. Multiplatform support All main operating systems support running Grails applications Summary Grails is a robust MVC based solution that apart from other frameworks does not focus on a single application type, but supports them all. It lacks a little in security measures by itself, but it can be easily extended by other security tools available. Same as with Laravel, Grails tend to use Ruby on Rails best advantages and properties and transcend it to its own language based framework. After grasping the functionality of Groovy, it becomes 39

48 2. FRAMEWORK ANALYSIS extensible, robust and stable tool for building Java based applications. Deployment tends to be a little complicated but the framework itself is powerful. It is suitable for e-commerce, CRUD, desktop and also mobile applications. 2.9 Vaadin Vaadin is a Java-based opensource framework for building rich web applications. First developed as IT Mill Toolkit, it was officially launched and renamed to Vaadin in Its directory was opened a year later. Vaadin features server-side architecture which allows it to run most of the application logic on servers in contrast to JavaScript libraries and solutions based on browser plugins. [25] Client side is based on Google Web Toolkit (GWT), which is an opensource set of tools that allows developers to develop and maintain complex JavaScript based front-end applications in Java. Browser side of the application is supported by AJAX, ensuring broad interactive experience for the users. Vaadin is a component based framework, incorporating event-driven programming and widgets that make the programming closer to GUI software rather than combination of HTML and JavaScript. GWT operates only on the client side, thus does not lead to any trust issues, adding serverside data validation to all actions. Development with Vaadin is supported by unique combination of building on Java Virtual Machine (JVM) and HTML5, thus merging the approach between standard Java systems and web-based applications Framework Usage and Properties Since Vaadin is component-based, apart from MVC pattern, it follows reusebased approach to defining, implementing and composing loosely coupled independent components into systems. Java is a perfect tool for writing such types of applications with their logic remaining on the server side, enabling immediate access to data and services through Java. Vaadin s client side supports using both JavaScript as well as Java on the client side with the included compiler that translates Java to JavaScript, based on GWT, giving developers the full access to the Document Object Model (DOM) structure of the application. Meeting the framework is made very comfortable through its beautiful website. Introduction to Vaadin, describing its functionality and most importantly, well documented tutorials for building first application are well 40

49 2. FRAMEWORK ANALYSIS organized and easy to grasp by users. One of the learning features is the possibility of downloading The Book of Vaadin for free, simply by registering on Vaadin s website. Featured guides also contain sheets with diagrams for better understanding the architecture for Vaadin applications and composing the interface. Figure 2.1: Architecture for Vaadin Applications [25] Vaadin s comprehensive component nature provides a large set of user interface components, controls and widgets with built-in lazy loading that helps to facilitate client side development. Other features such as drag and drop support and mobile touch support are provided by AJAX which enables to create highly interactive websites with no need for page reloading. Looks of the application can be customized by powerful CSS and SASS based component styling and good looking themes that are also provided with custom samples with no need of Java code alteration. Development in Vaadin is purely object oriented, Java only and typesafe, providing a powerful server-side programming model. Vaadin also specializes on secure web application architecture, running the application code, validations and business logic on the server. 41

50 2. FRAMEWORK ANALYSIS The trend of enhancing the frameworks with components also takes its place in Vaadin framework. The community provides more than 500 components that allow to extend framework s functionality. These include various themes, data components, uploaders and much more. What distinguishes Vaadin s extensibility from other frameworks is the possibility of simply dragging and dropping the component into the framework s interface providing a fast extension installation Comparison Criteria Application development speed Development speed is moderately fast. Vaadin s architecture allows to keep the file amount low, however, writing a skeleton from a blank page can be a little time consuming. Starting with a theme, on the other hand, can be much faster. Learning curve Having advanced Java skills is an advantage when working with Vaadin, since the server side of the application is pure Java. Understanding structure of application can be tricky at first, but after a few simple projects, developer should be able to create more extensive systems. Documentation and community support Vaadin is well documented with cheat sheets, guides and its own book. The Vaadin community is very active. Over developers use Vaadin in their daily work and answer questions on the forum. Code length Average. The best way to start fast is to use custom themes provided by the community. However, application functionality code can be shorter in comparison with other frameworks. Application speed Depends on Java Runtime Enviroment speed, however application speed is completely sufficient. Usage Very good. After grasping Vaadin s functionality, it is easy to build with and provides very attractive developing approach. Stability Vaadin provides server-side user interface state management, secure parameter and request validation, built-in JSR-303 validation and SSL support. It is also extendable by further security components. 42

51 2. FRAMEWORK ANALYSIS Function extensibility Vaadin s community provides more than 500 components that can be easily dragged and dropped in the framework interface. Evolution After altering the code, application must be translated again. Requirements Vaadin supports Java Servlet API 2.3 and later versions and should work with any Java application server that conforms to the standard. License Vaadin is free and opensource under the Apache 2.0 license. Responsivity Very broad. Applications in Vaadin are written to be platform and device friendly. Multiplatform support All main operating systems are supported Summary Vaadin is designed to build web applications, not just websites. This makes it suitable for application development rather than website development, however, writing a content management system in Vaadin is possible and made easy. Its programming approach is closer to desktop application programming, allowing to write extensive interactive graphic applications, and it is able to deliver in situations where other web frameworks would not be as suitable Play Play is an opensource web application MVC framework officially released in October 2009 based on a lightweight, stateless, web-friendly architecture. It is written in Scala and Java programming languages, briefly reminding of Grails similar dual language approach. Scala is (similar to Groovy) intended to be compiled to Java bytecode, so that the result is executable on Java Virtual Machines. It is a programming language inspired by Java s shortcomings that has a full support of functional programming and a very strong type system. Apart from Grails, Play allows to choose the programming language for developing application logic. 43

52 2. FRAMEWORK ANALYSIS Play is heavily inspired by Ruby on Rails and Dajngo and is following their concept of modules, development and command line interface. Apart from other Java-centric frameworks, Play uses no Java EE 5 constraints making it easier to work with. For example, it is fully RESTful, meaning its connections are Java EE sessions free Framework Usage and Properties Installation and creating a project in Play is extremely simple. After downloading and adding the package, user is asked which application template to load (play-java, play-scala, play-java, minimal-java and minimal-scala) determining the extent of application and language for application logic. After naming the project, it can be easily imported to IntelliJ Idea, Eclipse or other developing interface with basic MVC file tree included. The tree consists of public folder with CSS, JavaScript and other user-visible content. The app folder includes folders for Java classes representing views, controllers and models. Configuration and routing files are separate. Models are mapped the same way as in Ruby on Rails. Every table in database represents a class extending a Java Persistence API and is then created in the database. Templating system is handled by asset compiler for CoffeeScript 6 and LESS. From the start, Play behaves and looks like easier, more lightweight Ruby on Rails. Also, introduction video tutorial and documentation on the framework s website are very convenient. One of the major features that distinguish Play from other frameworks is its native Scala support. Play uses Scala internally, but also exposes both Scala API, and Java API that is deliberately slightly different to fit in with Java conventions. Play is thus completely interoperable with Java. Also, thanks to Scala, application logic can be written in a more functional way, adjusting the approach to some algorithms. Play is also extensible with various modules adjusting its functionality same way as Ruby on Rails or Django, even though its API comes with most requirements built in. Testing in Play is very nicely handled. It uses JUnit 7 by default and will create a new process for each test. Another good testing feature is Play s ability to mock a whole application for the test to use. For example, a tool 5. A widely used enterprise computing platform developed under the Java Community Process. 6. A programming language that transcompiles to JavaScript with syntax improvements inspired by Ruby and Haskell. 7. A unit testing framework for the Java programming language 44

53 2. FRAMEWORK ANALYSIS like Mockito is required to test out code or infrastructure in other Java based frameworks, unlike Play in JavaTest with FakeApplication, which allows developers to spin up a real fake application with a real in-memory database. Its debug tool is similar to Nette s and is making application testing much easier. Play also adds support for secure routing and has a strong annotationbased authentication. These features enable developers to increase their application s security without needing to write an if block in every method. All that is required is to annotations thus creating a very convenient approach of handling basic security measures Comparison Criteria Application development speed Development speed is fast. Play does a lot of work for the developer and its code generating approach is similar to Ruby on Rails. Easy database object mapping and testing make Play one of the faster developing frameworks. Learning curve Learning to use Play is very easy. Mostly thanks to its clean file structure and strictly MVC oriented approach. Also, learning to create web applications in Java is not that hard as learning it in Ruby or Python. Documentation and community support Play s community is not so extensive, but it is playing its part. Documentation is well organized and tutorials nicely structured. Code length Average to short. Scaffolding is made possible through a module, yet generated project skeleton covers the most of project setup. Application speed Depends on Java Runtime Environment speed, however the compiler and runtime (JVM) do all the work so that applications can run faster. Usage Combining Ruby on Rails and Django application developing approach with the simplicity of MVC pattern and clean code make the usage of the framework very user friendly. Stability Play provides basic support for secure routing and has a strong annotation-based authentication. Other security modules can be installed separately. 45

54 2. FRAMEWORK ANALYSIS Function extensibility Play follows the concept of module extensibility, making it easy to adjust. Evolution One of the great properties of Play is its hit refresh work flow. After altering the code, only thing needed is to refresh the browser. Requirements Play can be deployed on any server supporting Java. To run the framework, JDK 6 is needed. License Play is free and opensource under the Apache 2.0 license. Responsivity Applications in Play are written to be platform and device friendly. It can also be extended through various modules. Multiplatform support All main operating systems are supported Summary Play is a very good Java based, easy-to-learn option for developers that are fond of Ruby on Rails approach of web application development. It is suitable for building CRUD systems or e-commerce systems. Thanks to its pure MVC pattern structure, it is easy to learn and fast to grasp. It does not have the scale of extensibility or community support as its Java based counterparts, but in framework handling and usage, it beats them all Framework Overview Laravel is a very powerful tool for building web applications in PHP. It provides the approaches of extensive packaging systems, scaffolding and easy database setup from popular frameworks such as Ruby on Rails and represents it in PHP, mitigating the need of learning more complex programming languages and leaving developers with functions they know from PHP. Laravel is based on MVC architecture and is distinguished primarily by its real world optimization and the fact that it goes towards development issues that matter. It is opensource and can be used to develop extensive systems as well as blogs and CMS. Nette is by far the best option for beginner web application developers. Mostly thanks to its pure MVC approach, straight forward file structure and well distinguished class types. It is designed to be as easy as possible and 46

55 2. FRAMEWORK ANALYSIS does not require any complicated setup or configuration. Apart from being PHP based, Nette uses custom Latte templating system alleviating the amount of HTML needed to be written. It is a highly secure framework with well protected forms and many custom security plugins. Nette is good for developing smaller e-commerce sites, wikis, blogs or CRUD applications, yet it is not very suitable for complex graphic applications. Phalcon is a PHP based, MVC framework built for applications requiring high performance. Its core is written in C and implemented in PHP in order to achieve high application speed. It comes with a collection of scripts for generating project skeleton, preparing database settings and thus alleviating the amount of code needed to be written. Also the core written in C is well disguised, even though it may cause trouble for PHP developer to debug C if a major problem occurs. Phalcon is well suitable for applications requiring fast responses and high request handling speed, however when writing a simpler application, using Nette or Laravel would be much easier. Ruby on Rails offers a very good way of building dynamic web applications. Mostly thanks to its abilities of scaffolding and good support of generating complex parts of application. However, it is not very suitable for building extensive thick client graphic web applications. ROR is very extensible thanks to its gem packaging system and it is a perfect tool for programmers that know Ruby and work on Unix based systems. Not knowing Ruby can be a huge obstacle for beginner users but after grasping it and understanding Ruby s syntax, managing ROR is quite easy. The only issue remains with application deployment and server requirements. Padrino is based on Sinatra and gives developers the freedom of crafting their own framework by preserving Sinatra s compact and fast developing approach and adding extensive functionality. This creates an independent, adjustable and strong framework. Padrino stands with ideology of making only most needed extensions part of the framework and that the rest should be adjusted to application needs. Even though Padrino can be harder to grasp, especially for developers not so familiar with Ruby language, it allows to create both smaller and larger, faster applications and has proven to be a quality alternative for Ruby on Rails framework. 47

56 2. FRAMEWORK ANALYSIS Django is another well-built framework solution allowing to build a dynamic website or a web application in a short period of time. It is recommended to be familiar with Python language before using Django, however, grasping its functionality is made easier through its MVC architecture. One of Django s top features is a well handled database model mapping and the ability to automatically generate application administration. Application deployment can be rather complicated especially for the thick client applications which Django is not very suitable for, as well as for extensive graphic applications. Flask is a Python based microframework, well suitable for introduction to web application programming. It does not have a form validation or database abstract layer for it follows the code to be as simple as possible with addition of extending the framework with modules and custom component extensions. Flask works well for applications that are standalone or prototypes and require to be developed quickly. It is commonly used in combination with templating system and ORM, making it a full size framework, yet still very small and simple. Grails is a robust MVC based web application framework solution written in Java and Groovy. Same as Laravel, it uses Ruby on Rails best advantages and properties and transcends it to its own language. In this case it is Java which is by itself a language created to be a solution suitable for developing web applications. Deployment tends to be a little complicated but the framework itself stays powerful and after understanding the basics of Groovy, it is also easier to learn. Grails is suitable for e-commerce, CRUD, desktop and also mobile applications. Vaadin is a Java-based opensource framework for building rich web applications. It is a component based framework, standing on event-driven programming and widgets that make the development closer to GUI software rather than combination of HTML and JavaScript. Developing applications in Vaadin is closer to desktop applications programming, allowing to write extensive applications or interactive graphic programs which most frameworks are not suitable for. 48

57 2. FRAMEWORK ANALYSIS Play is a Java based framework that is easy to learn and is suitable for developers that are fond of Ruby on Rails approach of web application development. It is MVC based and written in Scala and Java languages. Play is suitable for building CRUD applications or e-commerce systems and even though it does not have the scale of extensibility or community support as its similar Java based frameworks, it is very easy to use in comparison to its Java based siblings. 49

58 2. FRAMEWORK ANALYSIS 2.12 Summary and Comparison Tables It is clear that in the world of modern web application frameworks, there is plenty to choose from. All frameworks that have been tested for purposes of this paper are well written, properly documented and supported and all offer a great solution for creating dynamic web applications. Even though it is clear that some of the frameworks are more suitable for different development approaches than the others, level of knowledge of a given programming language is still one of the most important criteria. Being introduced to a complex framework that is written in a programming language the developer is not so familiar with can make understanding the framework functionality more difficult. However, for most of highly represented framework languages, there exists an alternative in different languages with similar programming approaches. Ruby on Rails proves to be the best solution for creating e-commerce systems as well as simple CRUD applications in a matter of hours, yet as it was mentioned before, it requires that the developer is familiar with Ruby language. Django and Laravel can be considered very good alternatives in different programming languages for this certain type of agile development. By far the best introduction to the world of web application developing turned out to be Nette. Especially for users that are not familiar with web application development at all. Vaadin proved to be the best choice for extensive systems and large graphic applications thanks to its desktoplike development approach. If speed should be the main criterion of an application, then the best solution would be Phalcon with its extremely fast response time. It is not possible to determine the best of all frameworks, because every single one is written in a different way, to solve different problems, and it is up to the developer to choose the most appropriate approach, whether it is agile development, desktop-like approach, easy customization, extensibility, or simply learning more about web application programming or a specific programming language. Output from research of tested frameworks according to the given criteria is introduced in a series of tables below. 50

59 2. FRAMEWORK ANALYSIS Framework Architecture Languages License Laravel MVC PHP MIT Nette MVC PHP BSD Phalcon MVC PHP, C BSD Ruby on Rails MVC Ruby MIT Padrino MVC Ruby MIT Django MVC Python BSD Flask Component Python BSD Grails MVC Java, Groovy Apache 2.0 Vaadin Component Java Apache 2.0 Play MVC Java Apache 2.0 Table 2.12: Comparison table of framework architectures, languages and licenses Framework Development speed Learning curve Documentation and support Laravel Fast Steep Very good Nette Rather fast Very steep Very good, mostly Czech Phalcon Rather fast Average Very good Ruby on Rails Very fast Steep Very good Padrino Very fast Average Good Django Very fast Rather steep Very good Flask Very fast Very steep Very good Grails Rather average Steep Very good Vaadin Fast Average Very good Play Fast Steep Good Table 2.12: Comparison table of framework development speed, learning curves and documentation and support 51

60 2. FRAMEWORK ANALYSIS Framework Code length Application speed Usage Laravel Average, scaffolding Fast Very good Nette Rather average Average Very good Phalcon Average, scaffolding Very fast Average Ruby on Rails Very short, scaffolding Fast Rather average Padrino Short, scaffolding Fast Rather average Django Very short, scaffolding Average Good Flask Very short Average Good Grails Short, scaffolding Average Very good Vaadin Average Average Very good Play Rather short Rather average Very good Table 2.12: Comparison table of framework code lengths, application speed and usage 52

61 2. FRAMEWORK ANALYSIS Framework Stability, security Extensibility Evolution Laravel Very good Very high, packaging system Very easy Nette Very good High, plugins Very easy Phalcon Average Average Very easy Ruby on Rails Good, extensions Very high, packaging system Very easy Padrino Good, extensions Very high, packaging system Easy Django Good, extensions High, packaging system Very easy Flask Good, extensions Very high, extensions Very easy Grails Average, Spring security High, extensions Hard Vaadin Very good, extensions High, extensions Average Play Good, extensions High, extensions Very easy Table 2.12: Comparison table of framework security, extensibility and evolution Framework Requirements Responsivity Laravel Several PHP extensions Templating system support Nette Several PHP extensions Layout modification plugins Phalcon GCC compiler, Git or XCode Not supported Ruby on Rails Ruby module Templating gems Padrino Ruby module, RubyGems Templating gems Django Python module Supported Flask Python module, Werkzeug, Jinja2 Not supported Grails Java JDK Supported Vaadin Java JDK Highly supported Play Java JDK Supported Table 2.12: Comparison table of framework requirements, and responsivity support 53

62 2. FRAMEWORK ANALYSIS 2.13 Chapter Conclusion In second chapter, the chosen frameworks were tested according to specified criteria and their functionality and usage was described. The chapter concluded the research in a summary description and usage recommendation as well as in tables describing the given criteria for each tested framework. 54

63 3 Web Application Development This chapter consists of the practical part of the paper. It describes requirements for applications to be developed, and the most suitable framework from last chapter s research is chosen. After analyzing the requirements and framework options, the chapter describes the design of applications, including diagrams and application structure. Last part of the chapter describes development and testing. 3.1 Application Requirements Practical part of this paper consists of designing and developing applications for LEMMA Laboratory of Electronic Multimedia Applications. The laboratory is housed at Faculty of Informatics of Masaryk University and it specializes in technology of multimedia processing and publishing, including production and post-production of films. The laboratory is very active, its main courses Basics of Film Discourse (PV110) and Production of Audiovisual Artefacts (PV113) specialize in multimedia education and production of student films that are annually presented on a faculty film festival that has been organized by LEMMA since

64 3. WEB APPLICATION DEVELOPMENT Application for LEMMA Even though members of the laboratory are very active and often contribute to the laboratory blog about new equipment, research or events concerning the film festival, LEMMA s website is rather obsolete. The website is written and compiled in TEXY 1 and every time a member of LEMMA wants to write a blog post or adjust content of a page, the whole application needs to be complied and uploaded on the server again. It was clear that the website needed a complete redesign that would be easily manageable, extensible and that would co-operate with user accounts of members of Masaryk University. Requirements for the application were stated as followed. New, unifying graphic design that is both modern and transparent Mobile device responsivity Easily manageable content editor Easy application extensibility User friendly environment University member account authentication User manager Website page manager Blog Photo and video gallery Application for Film Festival Since 2001, LEMMA s film festival website s structure remains unchanged. To alleviate the amount of programming needed by students of multimedia to manage the website consists of plain HTML and CSS that are annually changed according to the theme of the current film festival. Websites from each year are then archived to show the historical changes in film festivals. Even though there is no programming knowledge required for students of the laboratory courses, managing festival website content is 1. Lightweight markup language as well as converter of this format to XHTML, in a form of a library written in the PHP. 56

65 3. WEB APPLICATION DEVELOPMENT quite time consuming and editing the website header or footer means editing every single static HTML page. Since the application for LEMMA website was meant to be easily extensible, it was proposed that a mutation of the application would be developed in order to alleviate the festival website content management. Requirements for festival website application were stated as followed. Minimal front-end design to be easily editable for future themes Mobile device responsivity Easily manageable content editor Easy application extensibility User friendly environment University member account authentication User manager shared with LEMMA application Website page manager Film manager Sponsor manager Article manager Photo and video gallery 3.2 Framework Selection Since both applications shared most of the requirements, it was clear that one framework would be much more suitable for both, rather than implementing two separate solutions. The key request for both applications was easy management and extensibility and even though most of the tested frameworks would have been suitable for this criteria, knowledge of a given programming language had to be considered as well. PHP is the most popular language among web developers. Same as Java, it is taught in most mandatory programming courses on Faculty of Informatics. It is also highly probable that even though students working with the websites will have 57

66 3. WEB APPLICATION DEVELOPMENT previous knowledge of HTML and CSS, not all of them will possess previous experience with web applications or frameworks. Therefore, the introduction to the framework must be made as easy as possible. Also, to mitigate the requirements on the server it would be suitable to choose a framework that is written in PHP. Since requirements cover easy framework usage and clear introduction to the application, it appears that using Nette framework for the development might be the best solution. Nette is easy to learn and its code and file structure is well suitable for beginner developers. It is easily extensible and does not have any special requirements on the server. Using its templating system would prove to be a good solution when adjusting the front-end of a festival website. It can also be combined with plain HTML and does not require any further configuration. Together with its advanced security and easy customization, Nette would be a good choice for development of these applications. 3.3 Application Design One of the application requirements is that both applications share user management, so that it would be easier to administer for users managing both websites. This criterion results in a case of a shared database which is easily manageable within the server constrains. Content management can be separated to several sections, each defining a database entity that represents a given content type. The requirements lists allow to create a shared use case diagram that clearly shows types of content to be managed. 58

67 3. WEB APPLICATION DEVELOPMENT Figure 3.1: LEMMA applications use case diagram User Roles From the use case diagram, it is clear that there are four user types defining the levels of administration where each role possesses use cases of roles beneath it. First role level defines a blogger. User with this permission can manage blog posts, work with photo and video gallery on LEMMA website and upload and manage files and images that can be inserted into blog posts. This user level is typical for a laboratory intern or a member of LEMMA who does not participate in organizing the film festival. 59

68 3. WEB APPLICATION DEVELOPMENT Second role defines a film festival website content editor, typically a student of PV113 whose course task is to manage the festival website. This type of user can alter everything on film festival website including articles, partners, movies, galleries as well as static pages. They are also granted the blogger s permissions, meaning that this user can also post blog entries about film festival news on LEMMA website and manage LEMMA galleries. Next in the hierarchy are LEMMA website content editors. User with this role can manage static pages and home sections on laboratory s website. It is a typical role for a senior LEMMA member that is allowed to update laboratory s archives. Again, members with this role are granted permissions of a blogger, as well as those of a film festival website content editor. The highest position is defined as a super admin. This user can add new users to the system, manage their role levels as well as deleting them. Super user has all permissions except the permission to delete themselves from the database. User management can be handled both from LEMMA website and film festival website. This role is typical for a laboratory course mentor or a senior member Administration For end users, the biggest usage problems with traditional content management systems such as Joomla or Wordpress are its broad administration and large amount of option settings. Even though the tasks that users need to perform to manage the website content might be straightforward, common content management systems usually offer a lot of different settings for developers in the administration. Of course, some of these actions can be hidden from users, however, they will still need to navigate through several administration steps to get to desired settings. In order to create a website content management application that is user friendly, lightweight and yet still has a powerful administration tool, an edit what you see approach is introduced by LEMMA applications directly on the front-end. This form of administration not only alleviates the complexity of an administration module, it completely removes it. Leaving users with administration buttons directly on the front-end of both applications, next to the editable content. These buttons are only visible to users that are logged in and granted given permissions. 60

69 3. WEB APPLICATION DEVELOPMENT Content Management Thanks to simplified content administration, the structure of application is alleviated even further, allowing to create a database with minimum connections. Since all types of content are separated, there is no need for complicated connections between the user and content manager. This structure takes the application extensibility to the maximum, where creating a new content type is equal to creating a table in a database with no need for maintaining connections. Figure 3.2: LEMMA application class diagram 61

70 3. WEB APPLICATION DEVELOPMENT Figure 3.3: Film festival application class diagram It is plain to see that both applications have a lot in common and have a similar structure. Both websites require management of several types of content that are stored in a database in separate tables. Since Nette is used for application development, it is visible that all content types require just one model represented by given table in a database. Application structure thus remains transparent and easy to extend Graphic Design Modern trends of web design evolve every day and web designers tend to push the limits of websites further with each new approach. Creating a website that is modern, has a good visual side and is also easy to navigate may prove to be rather challenging. Even though trends evolve and enhance the ways websites are browsed, for some users, these changes can be confusing and every type of website that is not easy to navigate for everyone is a website that is not working properly. 62

71 3. WEB APPLICATION DEVELOPMENT One of the application requirements was to design a new, modern and unifying visual side of the website that would be easy to navigate and will familiarize its visitors with with the laboratory s work. First impression a website should give, is to present a statement about its purpose and contents. After arriving on a website homepage, it should only take seconds for the users to realize whether or not they are on the right website. LEMMA s original website has a well structured homepage, yet it overwhelms its visitors with large amounts of texts. And even though the heading saying Who are we? encourages the visitor to read more about website s content, it is also the first section to attract their attention. However, the first section should not be a question, it should be an answer to the question. LEMMA s website redesign introduces a rather different approach. It is designed to be minimalistic and easy to navigate. Its homepage instantly greets the visitor with a heading stating the name and purpose of the laboratory. To further familiarize its visitors with website content, a large header image is introduced, which can contain a photo of some laboratory equipment and members or students attending the film festival. Title info icons introduce the visitor to main purposes of the laboratory using short structured texts. Rest of the homepage contains newest blog posts that inform about current events around the laboratory and a quick overview about laboratory members and projects. Website s subpages are organized in a horizontal menu navigation with links to galleries, blog and other static pages. This new layout presents the laboratory in a transparent way and provides all the important information along with easy website navigation. Colors are based on the old design and unified with laboratory logo colors, resulting in a look that is distinguishable and easy to remember. While in administrator mode, every changeable section of the website is provided with administrator buttons that are graphically separated from the website layout and allow to manipulate with website content directly on the front-end. Making navigation and usage easy also for users that are logged in. 63

72 3. WEB APPLICATION DEVELOPMENT Figure 3.4: LEMMA s original website homepage 64

73 3. W EB A PPLICATION D EVELOPMENT Figure 3.5: Classic mode in LEMMA application graphic design 65

74 3. W EB A PPLICATION D EVELOPMENT Figure 3.6: Administration mode in LEMMA application graphic design 66

75 3.4 Application Implementation 3. WEB APPLICATION DEVELOPMENT Once all requirements are established and necessary design diagrams are made, it is important to choose the right development tools before creating the project Development Tools Since Nette is written in PHP with additional HTML and Latte templates, its projects can be developed in an integrated development environment (IDE) such as NetBeans, which is not only easy to set up and work with, but is also broadly used in programming courses at the Masaryk University. NetBeans IDE 8.1 can be downloaded for free directly from its website. [29] It allows to choose from several editions for different programming languages. For developing LEMMA applications Net Beans PHP is required. The PHP package contains all tools necessary for creating a Nette application as well as script debugging functions, highlighting PHP, HTML, CSS and Latte syntax, creating empty class templates and generating project documentation. Nette also provides a very good support for team based tools such as Subversion. NetBeans can be easily installed on a machine with any platform and there is no need for complex configuration. Furthermore, there are many extensions and plugins that can be downloaded separately, directly via the IDE itself. It can also be used for creating a database for current project and supports running a server for web application development such as Tomcat or Glassfish Creating the Project Nette s website provides a well written guide for starting a first project. The best and fastest way to create a Nette project is downloading its Sandbox archive. This archive contains everything needed for Nette application development, such as basic configuration, router setup, basic application file structure, and of course, resources such as Nette framework, Latte templating system, Requirements checker, Tracy debugging system and Adminer database tool. It is also possible to define custom Nette package with custom component selection included and use it to start a new project. Both Tracy and Adminer are set up to be active only on localhost and once the application is transferred to a server, the application switches to production mode and both tools are hidden from users. 67

76 3. WEB APPLICATION DEVELOPMENT Developers can use Nette s requirements checker to find out whether all requirements for running Nette are met, even though all extensions are usually installed initially on the server and there is no need for further installations. The only configuration that needs to be done by user is setting up the database connection in configuration text file. Everything else is taken care of by Sandbox and the project is ready for development. Opening the application folder in NetBeans creates a NetBeans PHP project that assigns every class and template to the project resources and displays project file structure to be worked with Project Structure Nette follows the MVC pattern and it is also visible in the default project file structure which is divided into several key folders. The app folder contains every crucial part of the project back-end. Apart from holding the very core of MVC pattern (templates, models and presenters) it also contains a config folder including its two core setup files. First configuration file, config.local.neon, defines the database connection and its optional parameters. The other file, config.neon, lists all other setup items such as timezone, session expiration, presenter definition and used services. It is crucial that it includes all application model names as services in order for the application to recognize them as models. Both of these configuration files are tabulator sensitive and must not be made accessible directly through URL. The router directory is another part of the setup, yet in Sandbox it is already set in a default way to display presenter URLs in a manner of presenter/action. For example, a page with editing a blog post with id 5 will now have URL set as: /blogpost/edit/5. There are many other options for adjusting URLs in a manner that they are not complicated and easy to read. They are widely described in Nette s documentation. First line in every PHP class in Nette projects defines its name space (location), so it is up to the developer to create a folder structure that suits them the most. It is only recommended to follow the classic MVC pattern, however, it is not mandatory, as long as each class has a properly defined name space. The model folder contains PHP classes defining database tables for various types of web content. The base presenter class includes all key database operations such as insert, delete, update, and get by id. Other content type models define a table in a database and contain functions specific for the 68

77 3. WEB APPLICATION DEVELOPMENT content type. For example, the gallery model includes a function for managing image files into folders and creating thumbnails. All functions in models are working with data. Either with the database or with files on the server. They pass their return values to presenters that inform templates about data alterations. Same as for models, presenter directory contains PHP classes defining presenters for given content types. There are also classes presenting pages on the website that may include more content types such as blog or gallery overview. Presenters work as a middleman in Nette project structure, receiving instructions from models, wrapping them in a way needed by given content type and then sending them to the front-end. They can also inform the user through passed flash messages about changes in data. Similarly to base model, the base presenter class contains functions that are common for all other presenters, such as handling an orphan letter at the end of the line. Since every template can have more views, the template folder contains more directories named after template pages to be displayed. For example, a blog post can have a template for creating, editing and displaying. Each of these template folders contain several templates written in Latte templating language combined with HTML. Templates can work with presenter functions and display its returned values on the front-end. They can also redirect users to given presenter:action URL. Among folders containing content type templates, there exists a file that represents the website layout shared with all pages. It includes elements such as website header, list of metatags, scripts, or a footer. It also defines locations for displaying website content or a given component. Last item in the app folder is component directory. This directory contains templates and core classes for given components that can be reused and displayed anywhere on the website. Main menu is the only primal LEMMA application component. It defines a list of subpages to be displayed, as well as static pages that are read from database entries. These items conclude the app folder, which defines a default application model. There is also no need for having only one model. For example, if the developer wants to create an administration model with different layout, they can simply create a new folder in app directory and add proper models, presenters and templates as well as Once this new model is defined in the router factory, it can be accessible for example by adding /admin after the base URL. Next two folders in the project tree consist of temporary files and logs. The log directory stores HTML files with exceptions thrown during application run. The application should be able to write in this directory, as it is 69

78 3. WEB APPLICATION DEVELOPMENT listed as one of the items in requirements checker. The temp directory stores session and cache folder, which accelerates application loading by storing core application files. It is recommended to delete the cache after updating core application files in order to display the changes on the front-end. The vendor directory provides application resources such as Nette framework or Latte templating system as well as optional plugins or extensions. For example Composer, a PHP dependency manager that is used for extending the application with other plugins and libraries. The last folder on the list, the www directory, is the only public folder. It contains all public content such as cascade style sheets, JavaScript files, fonts or images used on the website. Both LEMMA applications use Tiny- MCE, a WYSIWYG 2 editor for managing user input and uploaded files that are also located in www directory. The folder also contains Adminer directory, that is executable only on localhost. 2. What You See Is What You Get. An editor in which content onscreen during editing appears in a form closely similar to its output. 70

79 3. WEB APPLICATION DEVELOPMENT Figure 3.7: LEMMA Application file structure General Development Process As it was mentioned in the previous subsection, developing web applications in Nette stands on MVC standards that are represented in application model classes, presenter classes and Latte templates. First part of the development process consists of creating database tables according to application class diagrams. It is clear that tables represent current content types, as well as users and their user roles. Even though tables can be created in any database management tool, it is recommended to use Adminer when creating new tables, mostly because of its easy table connection and InnoDB selection. InnoDB is a storage engine format designed for short transaction handling and is suitable for Nette applications. Once database is created, it is linked with the application through config.local.neon file. Next step consists of creating model classes for the given database entities and defining their functions. All model classes inherit 71

80 3. WEB APPLICATION DEVELOPMENT properties and functions of the base model class and extend it with a link to a database table and functions needed by particular content types. All created models then must be added to config.neon file as new services in order to be recognized by the application. The classes in presenter directory define actions of templates connected to presenters and pass return values from models to templates. Same as with models, all presenters inherit properties from base presenter class and extend it with functions for particular content types. Even though most of the programming and data handling is done in model classes, presenters can contain additional functions for data encapsulation. Reusable components, such as forms that are used repeatedly in a presenter, are defined within its functions. Forms are declared easily by one function with provided parameters and then simply called with a control command on a template. Nette has an extensive form support and managing and creating them is one of its strong sides since they are an important part of every CRUD application. Presenter classes also handle Ajax snippets. To alleviate page refreshing, several events in LEMMA applications are provided with adjusted links that call an Ajax handling function instead of refreshing the page. These handling functions are situated in the presenters and after being called and having performed the requested action, they refresh only the necessary Ajax snippets on the page. After creating presenters, all templates used in the application are defined. Some templates can have multiple actions such as show, create or edit. Therefore they are structured in folders with template names and are named after those actions. Nette templates are written in Latte but can be easily combined with HTML and also allow to write shortened HTML commands and tags similar to HAML syntax. Latte is easy to combine with PHP and can use PHP functions by itself through modified syntax, as well as calling presenter functions. Also, iterating through database selections is made easy with foreach statement that automatically creates divs for iterated elements. Front-end of both applications stands on custom HTML template based on Bootstrap and is fully responsive for all types of mobile and desktop devices. Both websites use custom CSS and JavaScript effects for lazy title loading, smart scrolling, parallaxes and popup effects. It is clear that the festival application front-end will be altered every year with a new festival design. In order to alleviate the changes needed to be done while altering the website design, initial festival application layout is simplified. Users are able to completely transform the layout of the 72

81 3. WEB APPLICATION DEVELOPMENT application simply by file and CSS styling file. This approach is very similar to adjusting a static website and does not require any knowledge of Nette or PHP. Thanks to Nette s application structure, it is very easy to extend the application functionality simply by creating a new database table, connect it to a model class that is then added to config.local file and create a presenter with needed templates Content Management Implementation Main focus of both applications is that their users are able to manage their content easily and with no need for source code alteration. Depending on given permissions, users can manipulate with website content directly on the front-end. The highest user permissions are required for user management. Using a user manager, super admins can add and delete new users simply by entering their UČO number which is a unique identification number for people affiliated with the Masaryk University. They can also grant them one of privileges that were mentioned in section This user management section is fully based on Ajax snippets and does need to refresh the whole page. Super admins can manipulate user roles using arrow buttons that allow either to increase or decrease the level of permissions. For each administrative action, the checkrole function is called in order to verify permission level of a current logged user. Managing content of a website is best done using a WYSIWYG editor that allows to format texts, insert images as well as upload files to the server for later manipulation. For such purposes, LEMMA applications are provided with TinyMCE editor with responsive file manager extension. TinyMCE is a widely used opensource online editor for formatting texts directly on the front-end. Users are able to style texts into headings, tables or item lists in a way that is similar to desktop text editors. TinyMCE encapsulates input values with HTML tags and stores it into database. When being projected on the front-end of the application, Nette s smart escaping is turned off and HTML is translated into formatted texts. Most of content management sections in LEMMA applications use this type of input handling, because it represents a very fast way to style texts with no need for source code alteration. Responsive file manager is a TinyMCE extension that allows to store data on the server via JavaScript file manager window. This way users can organize files into folders and upload images, videos or text files that can be then linked in the text using TinyMCE s functions. This 73

82 3. WEB APPLICATION DEVELOPMENT feature can also be used for storing movie scripts and soundtracks from student films that are stored in the laboratory archive. All forms are secured with Nette form security rules that are stated for every input type in each of the forms, such as file type, maximum file upload size, character limit or checking whether the input is a valid link. This is one of Nette s strongest features and it is also easy to configure. Each form input is featured with a list of parameters defining the rules. Also, custom rule functions can be written for more specific cases. Managing Blog entries is based on TinyMCE input handling. Users can upload a thumbnail image using Nette s file upload, choose the title, and edit content of the blog post. These posts can then be edited in the same way or deleted. Both applications dispose of a main menu navigation that contains fixed items such as homepage or galleries. However, users can also manage static pages with various content, such as a contact page or an about page. Links to these static pages are then automatically displayed in the main menu. They can be altered or deleted in the same way as blog posts in LEMMA application and are also handled using TinyMCE. In addition, the festival application has an option of adding a static page to festival submenu item as it was handled on the website in previous years of the festival. LEMMA application s homepage consists of several sections that can be edited. Users can change the intro image via simple form by uploading a new file, manage intro info texts or change their images as well as edit sections such as projects or laboratory members. Even though the structure of LEMMA application homepage is rather fixed, it can be easily changed by altering the homepage template file. Galleries in both applications are handled by Nette s multiple upload form. Users are able to create photo galleries with titles and edit them by adding or deleting additional images. A folder for storing images is created for each new gallery, and thumbnails are generated for all images in order to alleviate page loading. Video galleries are defined as a list of iframes 3 with Youtube videos. Using a simple form, users are able to insert a new video easily by entering the video title and a Youtube link. Once all these content management features were introduced in LEMMA application, it was only a matter of hours to extend it in a mutation for film festival website. Both applications have a lot in common and stand on the 3. HTML element used for separating the page to segments with different sources. 74

83 3. WEB APPLICATION DEVELOPMENT same content management system core, yet the festival application introduces slightly extended content types. On festival s original website, it was required to regularly update festival sponsors, registered films and links to articles that were written about the festival. Since these three types of content were being added repeatedly, a content management system for all of them was introduced in the festival application. For festival sponsors, values such as the sponsor s title, type of sponsor or sponsor s logo are entered by user via simplified forms and then inserted into database. All festival partners and sponsors are then listed on the template. Same content management system is introduced for festival articles. Registered films are featured with TinyMCE to format larger amount of texts, such as a list of actors or the plot of the film User Authentication Even though user management in both applications is handled via entering user s UČO number, one of the key requirements on both applications is that users are authenticated using Masaryk University member account. In order to provide such authentication, the server both applications run on is provided with Shibboleth service. Shibboleth is a Single Sign-On service provider, which allows users to use more network sources using a single login. It handles situations where one person uses more user accounts on independent systems, which makes it necessary to manage each account separately. For these situations, the federation model is used for user authentication. It stands on a principle of a single federation that contains more accounts from different organizations. When a user wants to connect to one of these accounts, they use federation authentication services and log in using their home organization login. This way, it is not necessary to remember multiple login names and passwords. Furthermore, organization information systems do not have to maintain the account information, because they will receive them during user authentication. Shibboleth is then used as an implementation of this federation model. [30] In case of both LEMMA applications, Shibboleth is set up in a way that when a user accesses the page via HTTPS, they are automatically redirected to Masaryk University s Identity provider page that requires the user to log in using their UČO number and password. If the login process is successful, they are redirected back to the application page with login information included in HTTP headers. These headers include information about the login, such as cookies, sessions, user login, or university affiliation. 75

84 3. WEB APPLICATION DEVELOPMENT Once a user accesses the application page, it checks whether they are logged in the application. If not, HTTP headers are reviewed in order to find out whether the user was redirected after logging in through Identity provider. Once the right constants are found among the headers, application login function checks the eppn header value, which consists of the name of the person and organization. For Masaryk University users, this value consists of UČO identification number followed constant. Another important header constant is affiliation. This header contains user s relation to Masaryk University. For example, a university employee s affiliation value would include a string of member@muni.cz:employee@muni.cz. Once eppn header value describes a Masaryk University user and affiliation header contains a string of member@muni.cz, which defines a university member, user s UČO number is compared with the database entry for application s registered users. If the user s UČO matches the application database entry, they are logged in the application. Otherwise, an error warning stating that user is not in the application database is shown. User logout is handled in a two-step way. First, user is logged out of the application itself. The session is terminated and cookies are deleted. However, the user is still logged in the Identity provider and refreshing the page via HTTPS would result in an automatic login. Since Identity provider uses cookies that are stored not only in the browser but also on the Identity provider server, they cannot be deleted by the application. However, Identity provider is equipped with a special logout page for such purposes. Once redirected to this page, both types of cookies are deleted and user is logged out of Identity provider. Redirecting the user to this page concludes the application logout process. 3.5 Deployment On 12th of November 2015, testing versions of both LEMMA applications were deployed on the server administrated by Masaryk University s Institute of Computer Science (ICS). They run on Apache 2 application server including PHP The server was provided with PDO extension, Bundled GD extension and Shibboleth service that was set to redirect users to Identity provider page when accessing applications via HTTPS. During the development, both applications used an external MySQL database for data storage. When deployed on the ICS server, application data were transferred to PostgreSQL database running on the same server. Because 76

85 3. WEB APPLICATION DEVELOPMENT PostgreSQL does not support comparing of different data types and also require all queries to be ordered by given attribute, the migration required further configuration in order for the applications to be compatible both with MySQL and PostgreSQL databases for possible future transfer purposes. Members of the laboratory were granted user privileges and were testing the application in upcoming month. They were handed a manual for applications management and maintenance, which is listed among attachments on this paper s CD. Users discovered minor bugs, such as a displaced layout of flash messages for several unusual resolutions, wrong external links or a bad authentication for blog comments. These bugs were then fixed in newer versions. They also proposed future changes in the system to alleviate content management even more, such as custom content ordering or optional custom thumbnails for Youtube videos. Overall, the feedback from laboratory members has been very good. Users quickly familiarized themselves with both applications and were very satisfied with the content management implementation as well as with transparent user manuals. On 28th of December, LEMMA application was launched on http: //lemma.ics.muni.cz/ and is since then used and managed by members of the laboratory. The festival application is currently stored at http: //lemma.ics.muni.cz/pater/fffi/www and is ready to be deployed for the next year of film festival website that will be launched in the next semester within the course PV

86 4 Conclusion Ten popular modern web application frameworks were tested and compared for purposes of this paper. All of them were verbally evaluated and their key properties were structured in decision tables to alleviate the choice of preferred framework for readers of this thesis. The most suitable framework for implementation of LEMMA laboratory applications was chosen from the tested sample and used for application development. In practical part of this thesis, content management applications for LEMMA laboratory website and annual film festival organized by Faculty of Informatics were developed using Nette framework. Both applications were designed for custom laboratory content types that are easily manageable directly through the front-end. They are connected to university accounts of their users and they use Masaryk University Identity provider for user authentication. Even though the applications were intended predominantly for LEMMA laboratory usage, after minor modifications, they can be utilized for content management of any CRUD based website, instead of bulky content management systems like Wordpress or Joomla, in order to facilitate back-end management. Application functionality can also be extended in the future. Purposed updates may include features such as user activity logs, custom content type ordering or extended user profiles. Both applications are now used by members of the laboratory and students of the courses PV110 and PV113, and they are utilized on the servers of Masaryk University s Institute of Computer Science. 78

87 Attachments A. Design Diagrams for LEMMA Applications Figure 4.1: Use case diagram for both applications 79

88 4. CONCLUSION Figure 4.2: LEMMA application class diagram 80

89 4. CONCLUSION Figure 4.3: Film festival application class diagram 81

Etanova Enterprise Solutions

Etanova Enterprise Solutions Etanova Enterprise Solutions Server Side Development» 2018-06-28 http://www.etanova.com/technologies/server-side-development Contents.NET Framework... 6 C# and Visual Basic Programming... 6 ASP.NET 5.0...

More information

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer. Laravel

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer. Laravel About the Tutorial Laravel is a powerful MVC PHP framework, designed for developers who need a simple and elegant toolkit to create full-featured web applications. Laravel was created by Taylor Otwell.

More information

Helpline No WhatsApp No.:

Helpline No WhatsApp No.: TRAINING BASKET QUALIFY FOR TOMORROW Helpline No. 9015887887 WhatsApp No.: 9899080002 Regd. Off. Plot No. A-40, Unit 301/302, Tower A, 3rd Floor I-Thum Tower Near Corenthum Tower, Sector-62, Noida - 201309

More information

EXPLORE MODERN RESPONSIVE WEB DESIGN TECHNIQUES

EXPLORE MODERN RESPONSIVE WEB DESIGN TECHNIQUES 20-21 September 2018, BULGARIA 1 Proceedings of the International Conference on Information Technologies (InfoTech-2018) 20-21 September 2018, Bulgaria EXPLORE MODERN RESPONSIVE WEB DESIGN TECHNIQUES Elena

More information

A Simple Course Management Website

A Simple Course Management Website A Simple Course Management Website A Senior Project Presented to The Faculty of the Computer Engineering Department California Polytechnic State University, San Luis Obispo In Partial Fulfillment Of the

More information

PHP WITH ANGULAR CURRICULUM. What you will Be Able to Achieve During This Course

PHP WITH ANGULAR CURRICULUM. What you will Be Able to Achieve During This Course PHP WITH ANGULAR CURRICULUM What you will Be Able to Achieve During This Course This course will enable you to build real-world, dynamic web sites. If you've built websites using plain HTML, you realize

More information

Hypertext Markup Language, or HTML, is a markup

Hypertext Markup Language, or HTML, is a markup Introduction to HTML Hypertext Markup Language, or HTML, is a markup language that enables you to structure and display content such as text, images, and links in Web pages. HTML is a very fast and efficient

More information

Ruby on Rails Welcome. Using the exercise files

Ruby on Rails Welcome. Using the exercise files Ruby on Rails Welcome Welcome to Ruby on Rails Essential Training. In this course, we're going to learn the popular open source web development framework. We will walk through each part of the framework,

More information

}w!"#$%&'()+,-./012345<ya

}w!#$%&'()+,-./012345<ya Masaryk University Faculty of Informatics }w!"#$%&'()+,-./012345

More information

CS50 Quiz Review. November 13, 2017

CS50 Quiz Review. November 13, 2017 CS50 Quiz Review November 13, 2017 Info http://docs.cs50.net/2017/fall/quiz/about.html 48-hour window in which to take the quiz. You should require much less than that; expect an appropriately-scaled down

More information

Create-A-Page Design Documentation

Create-A-Page Design Documentation Create-A-Page Design Documentation Group 9 C r e a t e - A - P a g e This document contains a description of all development tools utilized by Create-A-Page, as well as sequence diagrams, the entity-relationship

More information

Ruby on Rails. SITC Workshop Series American University of Nigeria FALL 2017

Ruby on Rails. SITC Workshop Series American University of Nigeria FALL 2017 Ruby on Rails SITC Workshop Series American University of Nigeria FALL 2017 1 Evolution of Web Web 1.x Web 1.0: user interaction == server roundtrip Other than filling out form fields Every user interaction

More information

Modern and Responsive Mobile-enabled Web Applications

Modern and Responsive Mobile-enabled Web Applications Available online at www.sciencedirect.com ScienceDirect Procedia Computer Science 110 (2017) 410 415 The 12th International Conference on Future Networks and Communications (FNC-2017) Modern and Responsive

More information

PROFESSIONAL TRAINING

PROFESSIONAL TRAINING PROFESSIONAL TRAINING What you will be Able to Achieve during This course This course will enable you to build real-world, dynamic web sites development design and promotion. Using PHP language and database

More information

(p t y) lt d. 1995/04149/07. Course List 2018

(p t y) lt d. 1995/04149/07. Course List 2018 JAVA Java Programming Java is one of the most popular programming languages in the world, and is used by thousands of companies. This course will teach you the fundamentals of the Java language, so that

More information

CHOOSING THE RIGHT HTML5 FRAMEWORK To Build Your Mobile Web Application

CHOOSING THE RIGHT HTML5 FRAMEWORK To Build Your Mobile Web Application BACKBONE.JS Sencha Touch CHOOSING THE RIGHT HTML5 FRAMEWORK To Build Your Mobile Web Application A RapidValue Solutions Whitepaper Author: Pooja Prasad, Technical Lead, RapidValue Solutions Contents Executive

More information

Etanova Enterprise Solutions

Etanova Enterprise Solutions Etanova Enterprise Solutions Front End Development» 2018-09-23 http://www.etanova.com/technologies/front-end-development Contents HTML 5... 6 Rich Internet Applications... 6 Web Browser Hardware Acceleration...

More information

Server-Side Web Programming: Python (Part 2) Copyright 2017 by Robert M. Dondero, Ph.D Princeton University

Server-Side Web Programming: Python (Part 2) Copyright 2017 by Robert M. Dondero, Ph.D Princeton University Server-Side Web Programming: Python (Part 2) Copyright 2017 by Robert M. Dondero, Ph.D Princeton University 1 Objectives You will learn about: Python WSGI programming Web app frameworks in general (briefly)

More information

Static Webpage Development

Static Webpage Development Dear Student, Based upon your enquiry we are pleased to send you the course curriculum for PHP Given below is the brief description for the course you are looking for: - Static Webpage Development Introduction

More information

The course also includes an overview of some of the most popular frameworks that you will most likely encounter in your real work environments.

The course also includes an overview of some of the most popular frameworks that you will most likely encounter in your real work environments. Web Development WEB101: Web Development Fundamentals using HTML, CSS and JavaScript $2,495.00 5 Days Replay Class Recordings included with this course Upcoming Dates Course Description This 5-day instructor-led

More information

AirBespoke Inventory Tracking System

AirBespoke Inventory Tracking System Colorado School of Mines Field Session AirBespoke Inventory Tracking System Client: Kylen McClintock Written by: Peter Palumbo, Kyle Thistlewood, Nhan Tran, Minh Vu June 22, 2016 Contents 1 Introduction

More information

A Comparison Study of Web Based Application Development Using PHP and ASP.NET

A Comparison Study of Web Based Application Development Using PHP and ASP.NET A Comparison Study of Web Based Application Development Using PHP and ASP.NET Morris M. Liaw, Ph. D. Univ. of Houston Clear Lake Houston, TX 77058, US liaw@uhcl.edu Abdul Mansoor Mohammed. Univ. of Houston

More information

ZEND: Survey on the Examination System

ZEND: Survey on the Examination System ZEND: Survey on the Examination System Sun Bingli, K. Ramesh Babu School of Computing Science and Engineering, VIT University, TamilNadu, India bingli_0202@163.com; Abstract With the development of computer

More information

Implementing a Numerical Data Access Service

Implementing a Numerical Data Access Service Implementing a Numerical Data Access Service Andrew Cooke October 2008 Abstract This paper describes the implementation of a J2EE Web Server that presents numerical data, stored in a database, in various

More information

Lab 1 MonarchPress Product Description. Robert O Donnell CS411. Janet Brunelle. September 20, Version #2

Lab 1 MonarchPress Product Description. Robert O Donnell CS411. Janet Brunelle. September 20, Version #2 Lab 1 MonarchPress Description 1 Lab 1 MonarchPress Product Description Robert O Donnell CS411 Janet Brunelle September 20, 2015 Version #2 Lab 1 MonarchPress Description 2 Table of Contents 1 INTRODUCTION...

More information

Get in Touch Module 1 - Core PHP XHTML

Get in Touch Module 1 - Core PHP XHTML PHP/MYSQL (Basic + Advanced) Web Technologies Module 1 - Core PHP XHTML What is HTML? Use of HTML. Difference between HTML, XHTML and DHTML. Basic HTML tags. Creating Forms with HTML. Understanding Web

More information

All India Council For Research & Training

All India Council For Research & Training WEB DEVELOPMENT & DESIGNING Are you looking for a master program in web that covers everything related to web? Then yes! You have landed up on the right page. Web Master Course is an advanced web designing,

More information

Overview of Web Application Development

Overview of Web Application Development Overview of Web Application Development Web Technologies I. Zsolt Tóth University of Miskolc 2018 Zsolt Tóth (University of Miskolc) Web Apps 2018 1 / 34 Table of Contents Overview Architecture 1 Overview

More information

Web Development IB PRECISION EXAMS

Web Development IB PRECISION EXAMS PRECISION EXAMS Web Development IB EXAM INFORMATION Items 53 Points 73 Prerequisites COMPUTER TECHNOLOGY Grade Level 10-12 Course Length ONE YEAR Career Cluster INFORMATION TECHNOLOGY Performance Standards

More information

A Web-Based Application for Automatic Evaluation of Programming Assignments

A Web-Based Application for Automatic Evaluation of Programming Assignments University of Nevada, Reno A Web-Based Application for Automatic Evaluation of Programming Assignments A thesis submitted in partial fulfillment of the requirements for the degree of Master of Science

More information

Reading How the Web Works

Reading How the Web Works Reading 1.3 - How the Web Works By Jonathan Lane Introduction Every so often, you get offered a behind-the-scenes look at the cogs and fan belts behind the action. Today is your lucky day. In this article

More information

Backend Web Frameworks

Backend Web Frameworks Backend Web Frameworks How do we: inspect the requested URL and return the appropriate page? deal with POST requests? handle more advanced concepts like sessions and cookies? scale the application to

More information

MonarchPress Software Design. Green Team

MonarchPress Software Design. Green Team MonarchPress Software Design 1 Unequipped Digital Journalism explosion of news media consumption on the internet users demand has steadily driven need for: captivating writing and reporting high-quality

More information

INTRODUCTION TO ZEND FRAMEWORK

INTRODUCTION TO ZEND FRAMEWORK INTRODUCTION TO ZEND FRAMEWORK Dragos-Paul POP Faculty of Computer Science for Business Management, Romanian American University, Bucharest, Romania ABSTRACT A software framework provides the skeleton

More information

HTML CSS JAVASCRIPT WEB PUBLISHING IN ONE HOUR A DAY SAMS TEACH YOURSELF COVERING HTML5 CSS3 AND JQUERY 7TH EDITION

HTML CSS JAVASCRIPT WEB PUBLISHING IN ONE HOUR A DAY SAMS TEACH YOURSELF COVERING HTML5 CSS3 AND JQUERY 7TH EDITION HTML CSS JAVASCRIPT WEB PUBLISHING IN ONE HOUR A DAY SAMS TEACH YOURSELF COVERING HTML5 CSS3 AND JQUERY 7TH EDITION page 1 / 5 page 2 / 5 html css javascript web pdf We have curated a list of free development

More information

Development of an e-library Web Application

Development of an e-library Web Application Development of an e-library Web Application Farrukh SHAHZAD Assistant Professor al-huda University, Houston, TX USA Email: dr.farrukh@alhudauniversity.org and Fathi M. ALWOSAIBI Information Technology

More information

PHP TABLE OF CONTENTS. For Young Aspirants KARMICK. Introduction. The ABCs of PHP. Why Choose PHP As A Career?

PHP TABLE OF CONTENTS. For Young Aspirants KARMICK. Introduction. The ABCs of PHP. Why Choose PHP As A Career? Call us: +91 33 2426 4362 / +91 9836423755 100% Placement Guaranteed Career Courses in Kolkata PHP For Young Aspirants TABLE OF CONTENTS Introduction ----------------------------- The ABCs of PHP -----------------------------

More information

EasyChair Preprint. Introduction to Development of Software Support for Training and Testing IT Administrators

EasyChair Preprint. Introduction to Development of Software Support for Training and Testing IT Administrators EasyChair Preprint 302 Introduction to Development of Software Support for Training and Testing IT Administrators Petra Holbíková, Lukáš Kráĺık, Petr Žáček and Roman Jašek EasyChair preprints are intended

More information

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer. Joomla

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer. Joomla About the Tutorial Joomla is an open source Content Management System (CMS), which is used to build websites and online applications. It is free and extendable which is separated into frontend templates

More information

WordPress SEO. Basic SEO Practices Using WordPress. Leo Wadsworth LeoWadsworth.com

WordPress SEO. Basic SEO Practices Using WordPress. Leo Wadsworth LeoWadsworth.com Basic SEO Practices Using WordPress Leo Wadsworth LeoWadsworth.com Copyright 2012, by Leo Wadsworth, all rights reserved. Unless you have specifically purchased additional rights, this work is for personal

More information

Blog site (cont.) theme, 202 view creations, 205 Browser tools, 196 Buytaert, Dries, 185

Blog site (cont.) theme, 202 view creations, 205 Browser tools, 196 Buytaert, Dries, 185 Index A Administration, 157 backups and restore (see Backups and restore website) file system, 161 log files, 162 tasks, 157 updates and security patches, 165 user accounts, 166 Aggregator module, 218

More information

CORE PHP CURRICULUM. Introductory Session Web Architecture Overview of PHP Platform Origins of PHP in the open source community

CORE PHP CURRICULUM. Introductory Session Web Architecture Overview of PHP Platform Origins of PHP in the open source community CORE PHP CURRICULUM What you will Be Able to Achieve During This Course This course will enable you to build real-world, dynamic web sites. If you've built websites using plain HTML, you realize the limitation

More information

SYMFONY2 WEB FRAMEWORK

SYMFONY2 WEB FRAMEWORK 1 5828 Foundations of Software Engineering Spring 2012 SYMFONY2 WEB FRAMEWORK By Mazin Hakeem Khaled Alanezi 2 Agenda Introduction What is a Framework? Why Use a Framework? What is Symfony2? Symfony2 from

More information

Introduction to PHP. Handling Html Form With Php. Decisions and loop. Function. String. Array

Introduction to PHP. Handling Html Form With Php. Decisions and loop. Function. String. Array Introduction to PHP Evaluation of Php Basic Syntax Defining variable and constant Php Data type Operator and Expression Handling Html Form With Php Capturing Form Data Dealing with Multi-value filed Generating

More information

Programming Fundamentals of Web Applications

Programming Fundamentals of Web Applications Programming Fundamentals of Web Applications Course 10958B; 5 days, Instructor-led Course Description This five-day instructor-led course provides the knowledge and skills to develop web applications by

More information

Web Page Designing Manual READ ONLINE

Web Page Designing Manual READ ONLINE Web Page Designing Manual READ ONLINE Corporate Design Manual Web Design Forums For - Free Ebook Corporate Design Manual Web Design Forums For Designers PDF e- books and documents pdf doc xls ppt docx

More information

Liferay Digital Experience Platform. New Features Summary

Liferay Digital Experience Platform. New Features Summary Liferay Digital Experience Platform New Features Summary Liferay has redesigned its platform with new functionality in Liferay Digital Experience Platform (DXP). The following is a summary of the key new

More information

ASP.NET MVC Training

ASP.NET MVC Training TRELLISSOFT ASP.NET MVC Training About This Course: Audience(s): Developers Technology: Visual Studio Duration: 6 days (48 Hours) Language(s): English Overview In this course, students will learn to develop

More information

Learning to Provide Modern Solutions

Learning to Provide Modern Solutions 1 Learning to Provide Modern Solutions Over the course of this book, you will learn to enhance your existing applications to modernize the output of the system. To do this, we ll take advantage of the

More information

MASTERS COURSE IN FULL STACK WEB APPLICATION DEVELOPMENT W W W. W E B S T A C K A C A D E M Y. C O M

MASTERS COURSE IN FULL STACK WEB APPLICATION DEVELOPMENT W W W. W E B S T A C K A C A D E M Y. C O M MASTERS COURSE IN FULL STACK WEB APPLICATION DEVELOPMENT W W W. W E B S T A C K A C A D E M Y. C O M COURSE OBJECTIVES Enable participants to develop a complete web application from the scratch that includes

More information

Comparative Assessment

Comparative Assessment Danny Hussey IS: 590 Web Development using CMS University of Tennessee School of Information Science Hamilton Parks Public Library Comparative Assessment Content Management Systems Wordpress, Joomla, and

More information

Design concepts for data-intensive applications

Design concepts for data-intensive applications 6 th International Conference on Applied Informatics Eger, Hungary, January 27 31, 2004. Design concepts for data-intensive applications Attila Adamkó Department of Information Technology, Institute of

More information

Introduction to XML. Asst. Prof. Dr. Kanda Runapongsa Saikaew Dept. of Computer Engineering Khon Kaen University

Introduction to XML. Asst. Prof. Dr. Kanda Runapongsa Saikaew Dept. of Computer Engineering Khon Kaen University Introduction to XML Asst. Prof. Dr. Kanda Runapongsa Saikaew Dept. of Computer Engineering Khon Kaen University http://gear.kku.ac.th/~krunapon/xmlws 1 Topics p What is XML? p Why XML? p Where does XML

More information

1 Introduction. 2 Web Architecture

1 Introduction. 2 Web Architecture 1 Introduction This document serves two purposes. The first section provides a high level overview of how the different pieces of technology in web applications relate to each other, and how they relate

More information

We re working full time this summer alongside 3 UCOSP (project course) students (2 from Waterloo: Mark Rada & Su Zhang, 1 from UofT: Angelo Maralit)

We re working full time this summer alongside 3 UCOSP (project course) students (2 from Waterloo: Mark Rada & Su Zhang, 1 from UofT: Angelo Maralit) We re working full time this summer alongside 3 UCOSP (project course) students (2 from Waterloo: Mark Rada & Su Zhang, 1 from UofT: Angelo Maralit) Our supervisors: Karen: heads project, which has been

More information

Ruby on Rails 3 March 14th, 2011 Ken Li Allison Pon Kyra Leimert Matt Delaney Edward Bassett

Ruby on Rails 3 March 14th, 2011 Ken Li Allison Pon Kyra Leimert Matt Delaney Edward Bassett CMPUT 410 Ruby on Rails 3 March 14th, 2011 Ken Li Allison Pon Kyra Leimert Matt Delaney Edward Bassett Introduction - What is Ruby on Rails? Ruby on Rails is an open source web application development

More information

Programming the World Wide Web by Robert W. Sebesta

Programming the World Wide Web by Robert W. Sebesta Programming the World Wide Web by Robert W. Sebesta Tired Of Rpg/400, Jcl And The Like? Heres A Ticket Out Programming the World Wide Web by Robert Sebesta provides students with a comprehensive introduction

More information

CNIT 129S: Securing Web Applications. Ch 3: Web Application Technologies

CNIT 129S: Securing Web Applications. Ch 3: Web Application Technologies CNIT 129S: Securing Web Applications Ch 3: Web Application Technologies HTTP Hypertext Transfer Protocol (HTTP) Connectionless protocol Client sends an HTTP request to a Web server Gets an HTTP response

More information

eclipse rich ajax platform (rap)

eclipse rich ajax platform (rap) eclipse rich ajax platform (rap) winner Jochen Krause CEO Innoopract Member of the Board of Directors Eclipse Foundation jkrause@innoopract.com GmbH outline rich ajax platform project status and background

More information

HTML Fundamentals. Code Institute Modular Outline for each Subject in the Program. Quizzes %

HTML Fundamentals. Code Institute Modular Outline for each Subject in the Program. Quizzes % Subject Title HTML Fundamentals Subject Description Subject Length in hours 10 HyperTet Markup Language (HTML) is a powerful computer language devised to implement website creation. HTML is all about content;

More information

xiii A. Hayden Lindsey IBM Distinguished Engineer and Director, Studio Tools Foreword

xiii A. Hayden Lindsey IBM Distinguished Engineer and Director, Studio Tools Foreword Foreword Business applications are increasingly leveraging Web technologies. Naturally this is true for Internet applications, but it is also true for intranet and extranet applications applications that

More information

Review of Mobile Web Application Frameworks

Review of Mobile Web Application Frameworks Review of Mobile Web Application Frameworks Article Number: 909 Rating: Unrated Last Updated: Mon, May 9, 2011 at 10:57 AM If you are serious about getting your website or web application mobile-friendly,

More information

DIGIT.B4 Big Data PoC

DIGIT.B4 Big Data PoC DIGIT.B4 Big Data PoC GROW Transpositions D04.01.Information System Table of contents 1 Introduction... 4 1.1 Context of the project... 4 1.2 Objective... 4 2 Technologies used... 5 2.1 Python... 5 2.2

More information

Full Stack Web Developer Nanodegree Syllabus

Full Stack Web Developer Nanodegree Syllabus Full Stack Web Developer Nanodegree Syllabus Build Complex Web Applications Before You Start Thank you for your interest in the Full Stack Web Developer Nanodegree! In order to succeed in this program,

More information

Tutorial Point Servlets Pdf

Tutorial Point Servlets Pdf Tutorial Servlets Pdf Free PDF ebook Download: Tutorial Servlets Pdf Download or Read Online ebook tutorial point servlets pdf in PDF Format From The Best User Guide Database on JSP, servlets, Struts,

More information

Active Workspace 3.4 Configuration. David McLaughlin / Oct 2017

Active Workspace 3.4 Configuration. David McLaughlin / Oct 2017 Active Workspace 3.4 Configuration David McLaughlin / Oct 2017 . Active Workspace Configuration Areas that can and should be configured Tips on how they work, and where to find more information New capabilities

More information

DreamFactory Security Guide

DreamFactory Security Guide DreamFactory Security Guide This white paper is designed to provide security information about DreamFactory. The sections below discuss the inherently secure characteristics of the platform and the explicit

More information

Introduction to XML 3/14/12. Introduction to XML

Introduction to XML 3/14/12. Introduction to XML Introduction to XML Asst. Prof. Dr. Kanda Runapongsa Saikaew Dept. of Computer Engineering Khon Kaen University http://gear.kku.ac.th/~krunapon/xmlws 1 Topics p What is XML? p Why XML? p Where does XML

More information

Advance Mobile& Web Application development using Angular and Native Script

Advance Mobile& Web Application development using Angular and Native Script Advance Mobile& Web Application development using Angular and Native Script Objective:- As the popularity of Node.js continues to grow each day, it is highly likely that you will use it when you are building

More information

Website Design and Development CSCI 311

Website Design and Development CSCI 311 Website Design and Development CSCI 311 Learning Objectives Understand good practices in designing and developing web sites Learn some of the challenges web design Activity In pairs: describe how you d

More information

Tutorial Point On Html5 Pdf

Tutorial Point On Html5 Pdf Tutorial On Html5 Pdf Free PDF ebook Download: Tutorial On Html5 Pdf Download or Read Online ebook tutorial point on html5 pdf in PDF Format From The Best User Guide Database HTML5 compliance score. HTML5

More information

CompuScholar, Inc. Alignment to Utah's Web Development I Standards

CompuScholar, Inc. Alignment to Utah's Web Development I Standards Course Title: KidCoder: Web Design Course ISBN: 978-0-9887070-3-0 Course Year: 2015 CompuScholar, Inc. Alignment to Utah's Web Development I Standards Note: Citation(s) listed may represent a subset of

More information

08/10/2018. Istanbul Now Platform User Interface

08/10/2018. Istanbul Now Platform User Interface 08/10/2018 Contents Contents...5 UI16... 9 Comparison of UI16 and UI15 styles... 11 Activate UI16... 15 Switch between UI16 and UI15...15 UI16 application navigator... 16 System settings for the user

More information

New Programming Paradigms

New Programming Paradigms New Programming Paradigms Lecturer: Pánovics János (google the name for further details) Requirements: For signature: classroom work and a 15-minute presentation Exam: written exam (mainly concepts and

More information

Requirements Specification

Requirements Specification Requirements Specification Smart Scheduling Requested by: Dr. Robert Yoder Associate Professor of Computer Science Computer Science Department Head Siena College Tom Mottola Jason Czajkowski Brian Maxwell

More information

web engineering introduction

web engineering introduction web engineering introduction team prof. moira norrie matthias geel linda di geronimo alfonso murolo www.globis.ethz.ch/education 20.02.2014 norrie@inf.ethz.ch 2 what is web engineering? technologies, tools

More information

The goal of this book is to teach you how to use Adobe Integrated

The goal of this book is to teach you how to use Adobe Integrated Clearing the AIR The goal of this book is to teach you how to use Adobe Integrated Runtime (AIR) to create desktop applications. You can use JavaScript or ActionScript to develop AIR applications, and

More information

Basics of Web. First published on 3 July 2012 This is the 7 h Revised edition

Basics of Web. First published on 3 July 2012 This is the 7 h Revised edition First published on 3 July 2012 This is the 7 h Revised edition Updated on: 03 August 2015 DISCLAIMER The data in the tutorials is supposed to be one for reference. We have made sure that maximum errors

More information

Simile Tools Workshop Summary MacKenzie Smith, MIT Libraries

Simile Tools Workshop Summary MacKenzie Smith, MIT Libraries Simile Tools Workshop Summary MacKenzie Smith, MIT Libraries Intro On June 10 th and 11 th, 2010 a group of Simile Exhibit users, software developers and architects met in Washington D.C. to discuss the

More information

CIS 086 : Week 1. Web Development with PHP and MySQL

CIS 086 : Week 1. Web Development with PHP and MySQL + CIS 086 : Week 1 Web Development with PHP and MySQL + Introduction n Instructor: Mark Brautigam n You: Skills and Technology Survey n You: Expectations of this class n You: Introduce yourself on the

More information

ITM DEVELOPMENT (ITMD)

ITM DEVELOPMENT (ITMD) ITM Development (ITMD) 1 ITM DEVELOPMENT (ITMD) ITMD 361 Fundamentals of Web Development This course will cover the creation of Web pages and sites using HTML, CSS, Javascript, jquery, and graphical applications

More information

What is the Best Way for Children to Learn Computer Programming?

What is the Best Way for Children to Learn Computer Programming? What is the Best Way for Children to Learn Computer Programming? Dr Alex Davidovic One of the defining characteristics of today s society is that the computers and mobile devices are the integral and natural

More information

Developing Web Applications

Developing Web Applications Developing Web Applications Ralph Moseley Middlesex University IIICENTCNNIAL 1807 ewiley 2007 13ICCNTENNIAL John Wiley & Sons, Ltd Preface Introduction Features Additional Materials Trademarks Acknowledgments

More information

Oracle Forms Modernization Through Automated Migration. A Technical Overview

Oracle Forms Modernization Through Automated Migration. A Technical Overview Oracle Forms Modernization Through Automated Migration A Technical Overview Table of Contents Document Overview... 3 Oracle Forms Modernization... 3 Benefits of Using an Automated Conversion Tool... 3

More information

CSCI 1320 Creating Modern Web Applications. Content Management Systems

CSCI 1320 Creating Modern Web Applications. Content Management Systems CSCI 1320 Creating Modern Web Applications Content Management Systems Brown CS Website 2 Static Brown CS Website Up since 1994 5.9 M files (inodes) 1.6 TB of filesystem space 3 Static HTML Generators Convert

More information

Incredible India. PreparedBy:Harshad Khamal &DivyeshDangar Page 1

Incredible India. PreparedBy:Harshad Khamal &DivyeshDangar Page 1 PreparedBy:Harshad Khamal &DivyeshDangar Page 1 Project Report On Submitted by :-Harshad Khamal & Divyesh Dangar. Guided by :-Pradip Vanpariya & Haresh Khachariya Sem :-B.Sc.IT- 5 th Sem. Year :-2013 College:-Shree

More information

WORKING PROCESS & WEBSITE BEST PRACTICES Refresh Creative Media

WORKING PROCESS & WEBSITE BEST PRACTICES Refresh Creative Media WORKING PROCESS & WEBSITE BEST PRACTICES Refresh Creative Media 1. INTRODUCTION Thank you for choosing Refresh Creative Media for your website development needs. This document describes our working process

More information

Languages in WEB. E-Business Technologies. Summer Semester Submitted to. Prof. Dr. Eduard Heindl. Prepared by

Languages in WEB. E-Business Technologies. Summer Semester Submitted to. Prof. Dr. Eduard Heindl. Prepared by Languages in WEB E-Business Technologies Summer Semester 2009 Submitted to Prof. Dr. Eduard Heindl Prepared by Jenisha Kshatriya (Mat no. 232521) Fakultät Wirtschaftsinformatik Hochshule Furtwangen University

More information

WEB SITE DESIGN Summer in Prague, Prague, Czech Republic

WEB SITE DESIGN Summer in Prague, Prague, Czech Republic COURSE SYLLABUS WEB SITE DESIGN Summer in Prague, Prague, Czech Republic Suggested US semester credit hours: 4 Contact hours: 60 Delivery method: Face to Face IFSA course code: CME280-11 Course length:

More information

THE INFORMATION SYSTEM AS A SUPPORT OF THE EDUCATION PROCESS ON SCHOOL OF BUSINESS ADMINISTRATION OF SILESIAN UNIVERSITY IN KARVINA

THE INFORMATION SYSTEM AS A SUPPORT OF THE EDUCATION PROCESS ON SCHOOL OF BUSINESS ADMINISTRATION OF SILESIAN UNIVERSITY IN KARVINA THE INFORMATION SYSTEM AS A SUPPORT OF THE EDUCATION PROCESS ON SCHOOL OF BUSINESS ADMINISTRATION OF SILESIAN UNIVERSITY IN KARVINA VÁCLAV KRÓL Silesian University in Opava School of Business Administration

More information

JAVASCRIPT JQUERY AJAX FILE UPLOAD STACK OVERFLOW

JAVASCRIPT JQUERY AJAX FILE UPLOAD STACK OVERFLOW page 1 / 5 page 2 / 5 javascript jquery ajax file pdf I marked it as a duplicate despite the platform difference, because as far as I can see the solution is the same (You can't and don't need to do this

More information

Technology in Action. Chapter Topics. Scope creep occurs when: 3/20/2013. Information Systems include all EXCEPT the following:

Technology in Action. Chapter Topics. Scope creep occurs when: 3/20/2013. Information Systems include all EXCEPT the following: Technology in Action Technology in Action Alan Evans Kendall Martin Mary Anne Poatsy Chapter 10 Behind the Scenes: Software Programming Ninth Edition Chapter Topics Understanding software programming Life

More information

But before understanding the Selenium WebDriver concept, we need to know about the Selenium first.

But before understanding the Selenium WebDriver concept, we need to know about the Selenium first. As per the today s scenario, companies not only desire to test software adequately, but they also want to get the work done as quickly and thoroughly as possible. To accomplish this goal, organizations

More information

Start of the site or web application development

Start of the site or web application development Web applications and multimedia technologies Lecture 2 Start of the site or web application development Prof. N.K. Trubochkina Department of computer engineering, HSE 2015 Lecture 02 Start of the site

More information

Leveraging the Social Web for Situational Application Development and Business Mashups

Leveraging the Social Web for Situational Application Development and Business Mashups Leveraging the Social Web for Situational Application Development and Business Mashups Stefan Tai stefan.tai@kit.edu www.kit.edu About the Speaker: Stefan Tai Professor, KIT (Karlsruhe Institute of Technology)

More information

Database Driven Web 2.0 for the Enterprise

Database Driven Web 2.0 for the Enterprise May 19, 2008 1:30 p.m. 2:30 p.m. Platform: Linux, UNIX, Windows Session: H03 Database Driven Web 2.0 for the Enterprise Rav Ahuja IBM Agenda What is Web 2.0 Web 2.0 in the Enterprise Web 2.0 Examples and

More information

Semester 2, 2018: Lab 1

Semester 2, 2018: Lab 1 Semester 2, 2018: Lab 1 S2 2018 Lab 1 This lab has two parts. Part A is intended to help you familiarise yourself with the computing environment found on the CSIT lab computers which you will be using

More information

About the Tutorial. Audience. Prerequisites. Disclaimer & Copyright. TurboGears

About the Tutorial. Audience. Prerequisites. Disclaimer & Copyright. TurboGears About the Tutorial TurboGears is a Python web application framework, which consists of many modules. It is designed around the MVC architecture that are similar to Ruby on Rails or Struts. TurboGears are

More information

Drupal 8 THE VIDER ITY APPR OACH

Drupal 8 THE VIDER ITY APPR OACH Drupal 8 THE VIDER ITY APPROACH Introduction DR UPAL 8: THE VIDER ITY APPROACH Viderity focuses on designing the Total User Experience for Drupal sites, using a user-centered design approach Traditionally,

More information

PhUSE Paper PP16. What I Know Is. Nicolas Guerro, Novartis Pharma AG, Basel, Switzerland

PhUSE Paper PP16. What I Know Is. Nicolas Guerro, Novartis Pharma AG, Basel, Switzerland Paper PP16 What I Know Is Nicolas Guerro, Novartis Pharma AG, Basel, Switzerland The opinions expressed in this presentation and on the following slides are solely those of the presenter and not necessarily

More information