BORYANA DELIYSKA

INTRODUCTION TO WEB PROGRAMMING

SOFIA 2018 ISBN 978-619-90990-1-8

1

This book is meant for professionals and anyone with an interest in WWW, information and communication technologies (ICT). Given the vigorous rate of development in the area, the book is in electronic form, which facilitates its regular update.

2

CONTENT CONTENT 3 INTRODUCTION 7 ABBREVIATION LIST 8 LIST OF FIGURES 12 LIST OF TABLES 13 Theme 1. WEB PROGRAMMING. ESSENCE. TYPES. RESOURCES 14 1.1. Nature and purpose of web programming 14 1.2. Web programming types 14 1.3. Protocols, standards, technologies and platforms for web application building and exploitation 15 1.3.1. Protocols 15 1.3.2. Web technologies and standards 16 1.3.3. Software platforms 17 1.4. Content management systems 21 Theme 2. WEB PROGRAMMING LANGUAGES. NATURE AND CLASSIFICATION. SYNTAX AND GRAMMAR. COMPARATIVE ANALYSIS 2.1.2. Key features 2.2. Historical reference and review of web programming languages 2.3. Classification of web programming languages 2.3.1. Client-side languages 2.3.2. Server-side languages

2.5. Web programming language comparison 2.5.1. Perl 2.5.2. Java and Scala 2.5.3. PHP 2.5.4. C# and F# 2.5.5. JavaScript (JS) 2.5.6. VBScript 2.5.7. Python and Boo 2.5.8. Ruby

3

2.5.10. Gо 2.5.11. Summary Theme 3. WEB APPLICATIONS 3.1. Web applications. Nature and types. Folder structure 3.1.1. Web application architecture 3.1.2. Access devices 3.1.3. Web application purpose 3.2. Declaring and running scripts in web applications 3.2.1. Declaring languages and scripts in the page head 3.2.2. Declaring languages and executing scripts in the page body 3.2.3. Server scripts declaring and execution 3.3. СОМ, COM+, DCOM, OLE Automation and ActiveX components 3.4. Rich internet applications 3.4.1. RIA resources 3.4.2. RIA development stages Theme 4. WEB PROGRAMMING FOR MOBILE SYSTEMS 4.1. Mobile OS 4.1.1. Mobile Windows OS 4.1.2. Apple iOS 4.1.3. Google Android 4.1.4. WebOS of LG Electronics 4.1.5. Tizen of Samsung and Intel 4.1.6. Sailfish OS 4.2. Specialized web programming languages for mobile applications 4.3. Mobile app platforms 4.3.1. Appcelerator 4.3.2. App Inventor 4.3.3. Buzztouch 4.3.4. EachScape 4.3.5. Corona SDK

4

4.3.6. Apache Cordova 4.3.7. Meme 4.3.8. Mobile Roadie 4.4. Mobile app development libraries 4.4.1. jQueryMobile 4.4.2. Zepto.js 4.4.3. jQT 4.4.4. React Native 4.5. Mobile app stories Theme 5. DATA SOURCES IN WWW. DATABASE INTERFACE 5.1. Structured server DB 5.1.1. Structured server DBMS 5.1.2. Structured server DSMS 5.2. Non-structured server DBs 5.2.1. Column DBs 5.2.2. Document DBs 5.2.3. Key-value DB (key-value store) 5.2.4. Graph DB 5.2.5. Hybrid (multi-model) DB 5.2.6. Semantic DB 5.3. Data source interface. Technologies 5.3.1. DB access models 5.3.2. Microsoft DB access technologies 5.3.3. JDBC technology Theme 6. TECHNOLOGIES AND PLATFORMS FOR WEB APPLICATIONS. COMPARATIVE ANALYSIS 6.1. Gateway technologies 6.1.1. CGI 6.1.2. SAPI 6.1.3. SSI interface 6.2. Java technologies 6.2.1. Interfaces for communication between remote applications

5

6.2.2. Java platforms 6.3. ASP technology 6.4. LAMP (Linux, Apache, MySQL, PHP) platform 6.4.1. LAMP components 6.4.2. LAMP resources 6.5. .NET platform 6.5.1. .NET Framework 6.5.2. .NET API 6.5.3. Visual Studio platform 6.6. ASP.NET technology 6.6.1. ASP.NET essence 6.6.2. ASP.NET components 6.7. ColdFusion technology 6.8. PostgreSQL + Perl 6.9. RIA resources 6.9.1. AJAX (Asynchronous JavaScript and XML) technologies 6.9.2. JavaFX 6.9.3. JavaScript platforms for SPA 6.9.4. Other platforms 6.10. Package managers 6.10.1. npm (Node Package Manager) 6.10.2. Gulp.js 6.10.3. Yeoman 6.10.4. Bower 6.10.5. PEAR (PHP Extension and Application Repository) 6.10.6. СPAN (Comprehensive Perl Archive Network) REFERENCES APPENDICES APPENDIX 1. LIST OF WEB APPLICATION PLATFORMS AND ENVIRONMENTS APPENDIX 2. Terminological dictionary

6

INTRODUCTION Web programming as an element of software engineering does not mean developing code of one or more web programming languages only. It is complex activity related to method, technology, design and codification of applications (web apps) representing organized software structures of content and functionality in the web. In the simplest case, web apps are static web pages, but lately these are very rarely encountered. The contemporary web apps are sites consisting of linked (static and dynamic) web pages, scripts and databases (DB). For their developing WWW and desktop ICT are used. There is great number of software platforms – one- or multi-language and possessing all resources for web apps development and implementation. Nevertheless, even experienced professionals find it difficult to be uptake about the dynamic development of ICT theory and practice and many firm technologies, including huge variety of languages, databases and frameworks. The purpose of this book is to present optimally the current state of web technologies, clearly recognizing that they are extremely dynamic and very often with a commercial orientation. Moreover, there is vastly ambiguity in the terminology in the area. Due to that, the book is available in an electronic form with a periodical update and possibility to feedback with the readers. My wish is to create a useful tool for beginners and for specialists also. I have aspired to summarize the most important features, technologies and languages related to web programming. The effective understanding of the content, separated into six themes, requires preliminary knowledge of basic ICT. In Theme 1 essence, purpose and classification of web programming is considered as well as used web protocols, standards and platforms. Theme 2 is an overview of features of the widespread general-purpose and scripting languages for web programming. Theme 3 refers to kind of web apps, their declaration and execution. A special attention is being paid to Rich Internet Applications (RIA). Theme 4 is dedicated to mobile web application programming as the most dynamically developing branch in the area. In Theme 5 online database management systems (DBMS) are presented, including their interface, access methods and technologies. In Theme 6, the most popular current web programming platforms and technologies are considered. There are two appendices: Appendix 1 is summary reference about most popular web integrated development environments (IDEs) and platforms. Appendix 2 is a brief terminological dictionary.

7

ABBREVIATION LIST AJAX – Asynchronous JavaScript and XML API – Application Program Interface ASP – Active Server Pages ATF – Ajax Tools Framework AWT – Abstract Windowing Toolkit BCL – Base Class Library CCMS – Component Content Management System CDI – Context and Dependency Injection CEP – Complex Event Processing CFML – Cold Fusion Markup Language CGI – Common Gate Interface CIL – Common Intermediate Language CLI – Call Level Interface CLI – Command Line Interface CLI – Common Language Infrastructure CMS – Content Management Systems COM – Component Object Model CRM – Customer Relationship Management CUI - Console User Interface or Character User Interface DB – Database DBMS – Database Management System DHT – Distributed Hash Table DLL – Dynamic-Linkable Library DOM – Document Object Model DSMS – Data Stream Management System DSN – Data Source Name ECMS – Enterprise Content Management Systems EDA – Еvent-Driven Architecture EIS – Enterprise Information Systems EJB – Enterprise Java Beans

8

ERP – Enterprise Resource Planning GIOP – General Inter-ORB Protocol GUI – Graphical User Interface GWT – Google Web Toolkit IDE – Integrated Development Environment IDL - Interface Definition Language IIS – Internet Information Server IIOP – Internet Inter-ORB Protocol IoC – Inversion of Control IoT – Internet of Things IS – information system ISAM – Indexed Sequential Access Method ISAPI – Internet Information Server Application Programing Interface JAAS – Java Authentication and Authorization Service JACC – Java Authorization Contract for Containers JAF – JavaBeans Activation Framework JAX-WS – Java API for XML Web Services JAX-RS – Java API for RESTful Web Services JCA – J2EE Connector Architecture JDBC – Java Database Connectivity JDK – Java Development Kit JEE – Java Enterprise Edition JME – Java Micro Edition JMS – Java Message Service JNDI – Java Naming and Directory Interface JPA – Java Persistence API JRE – Java Runtime Environment JRMP – Java Remote Method Protocol JSDK – Java Servlet Development Kit JSE – Java Standard Edition JSF – Java Server Faces

9

JSON – JavaScript Object Notation JSP – Java Server Pages JSR – Java Specification Request JSTL – Java Server Pages Standard Tag Library JTA – Java Transaction API JVM – Java Virtual Machine LCMS – Learning Content Management Systems MVC – Model-View-Controller NSAPI – Netscape Server Application Programing Interface OLAP – OnLine Analytical Processing OLTP – OnLine Transaction Processing OMG – Object Management Group ORB – Object Request Brokers OS – Operating System OSI – Open System Interconnection PDA – Personal Digital Assistants PDK – Perl Dev Kit RAP – Rich AJAX Platform RDBMS – Relational Database Management System RDSMS – Relational Data Stream Management System RFC – Request for Comments RIA – Rich Internet Application RMI – Remote Method Invocation RPC – Remote Procedure Call SAPI – Server Application Programming Interface SDK – Software Development Kit SOA – Service-Oriented Architecture SPA – Single-Page Application SSI – Server-Side Include StAX – Streaming API for XML ТСР – Transport Control Protocol

10

UI – User Interface UnQL – Unstructured Query Language URI – Uniform Resource Identifier UWP - Universal Windows Platform W3C – World Wide Web Consortium WPF - Windows Presentation Foundation WWW – World Wide Web XHR – XMLHttpRequest XML – eXtended Markup Language

11

LIST OF FIGURES Figure 1.1. Functional schema of WWW 16 Figure 1.2. Schema of web technologies 16 Figure 1.3. Difference between library and software framework 19 Figure 1.4. CMS types 20 Figure 2.1. Classification of programming languages for 2012–2016 (by GitHub and Stackoverflow) 41 Figure 3.1. Java web application folder structure 43 Figure 3.2. Exemplary content of ASP.NET web application folder 44 Figure 3.3. Schema of three-tier web application architecture 45 Figure 3.4. Example of multilayer architecture 46 Figure 3.5. Schema of MVC web application architecture 47 Figure 3.6. RIA controls (by Neil 2009) 59 Figure 3.7. Sequence of RIA interface structure building 61 Figure 3.8. An excerpt of Adobe Flex Builder component library 62 Figure 3.9. Comparison of ordinary and „sandbox” environment 63 Figure 5.1. Database access models 77 Figure 5.2. Microsoft DB access technologies (by MSDN library) 79 Figure 5.3. ODBC components 80 Figure 5.4. OLE DB structure 81 Figure 5.5. ADO, ODBC and OLE DB interconnections 82 Figure 5.6. ADO.NET access models (by Chand 2002) 82 Figure 5.7. JDBC architecture 84 Figure 6.1. Shema of request processing in CGI 85 Figure 6.2. Common RMI architecture 88 Figure 6.3. CORBA architecture 89 Figure 6.4. JRE architecture 90 Figure 6.5. JEE architecture 91 Figure 6.6. АJAX schema 101

12

LIST OF TABLES Table 1. General reference of the widespread web programming languages Table 2. Syntax and grammar specificity of the popular contemporary web programming languages Table 3. Basic and structured data type declaring in the popular contemporary web programming languages Table 4. Complex data type declaring Table 5. Operators Table 6. Aggregate characteristics of the most widespread web programming languages Table 7. Mobile services comparison Table 8. RIA platform features

13

Theme 1. WEB PROGRAMMING. ESSENCE. TYPES. RESOURCES 1.1. Nature and purpose of web programming In common sense, web programming is a set of web site development activities in WWW (World Wide Web) based on the public network Internet. In the simplest case, each web site includes static web pages, but usually is aggregation of static and dynamic web pages. The later ones link under certain rules data sources (structured and non-structured DB) and program codes (scripts), realizing some functionality. This combination of web pages, scripts and DB is called web application. The web applications are distributed (on one or more servers), working under HTTP and available by browser or non-browser client application serving as network interface. In details, web programming refers to writing, markup and coding, involved in Web site building (known as web development), which includes web content, web client and server scripting and network security1. In narrow sense, the web programming as a part of software engineering is a set of activities and technologies of script development. In the book, namely this aspect of the web programming is considered. They are not being discussed markup and styling languages that are the subject of web design. The scripts run under browser or server and one of their biggest advantages compared to conventional (desktop) applications is that they are written in languages compatible with the most local and network OS. This means that there is no need to be maintained different versions of applications. Other advantage is the lower development cost due to the availability of multiple ready-made resources (content management systems (CMS), script libraries, DBMS etc.). Moreover, the most of them do not require installation and run directly (on browser or server). The disadvantage of the scripts is their low performance because they are mostly interpretative or partly compiled and dependent of exchange rate between server and client. However, in contemporary languages the difference between compiled and interpretative code is not so big yet. Other disadvantage is that equal result visualization onto different computer screens or browsers is impossible. However, there are technologies that largely deal with this problem (see 3.3). By the semantic technology development, the web programming will become even more indispensable in the data processing, information and knowledge extraction and presentation. 1.2. Web programming types

1 http://www.techopedia.com/definition/23898/web-programming 14

The web programming is classified by different indications – destination, languages, platforms, functionality etc. The scripts start (directly or by preliminary parameter selection) from:  web page in browser;  non-browser software application;  Command Line Interface (CLI), called also Console User Interface or Character User Interface (CUI));  other scripts. The results of their execution in text screens, web pages or in windows outside browser are displayed. Most frequently and for the sake of user convenience, the results are in web pages, called also interface (or front-end) of the applications. The requests for information (or knowledge) of the web space are captured in dynamic web pages, while the results – in static ones. Obviously, the dynamic web pages, called also web forms, are interactive, but the static pages are for review only. The web programming is various according to:  type of created applications – static (with client scripts), dynamic (with client and server scripts), RIA (see 3.4);  type of network access – for fixed or mobile devices;  programming languages (see Theme 2);  used technologies (see Theme 6). 1.3. Protocols, standards, technologies and platforms for web application building and exploitation In contemporary web programming integrated technologies and platforms are used not only for script creating, but also for complete development and testing of web applications, including data sources. All these technologies and platforms stand on network protocols. 1.3.1. Protocols The network protocols2 are foundation of all activities and services on Internet. In particular, WWW works on HTTP (Hypertext Transfer Protocol), associated with the

2 Agreements (rules) between manufacturers about network communications implemented by hardware and software. 15 application layer of OSI3 and based on the lower level protocol stack TCP/IP4. In short, HTTP manages browser request and server response (фиг.1.1).

Browser Server Browser Creates and Executes server Visualizes results. sends data search scripts and works with Executes client scripts. and retrieval DB. Sends results to the requests. browser.

Figure 1.1. Functional schema of WWW 1.3.2. Web technologies and standards The script, markup and styling languages, DBMS, platforms, frameworks etc. are components of various standards and technologies for web application development and support. In the specialized literature, the term web technology is often used instead each of these components. Because of that and in the light of the following statement, it should be specified that web technology is kind of ICT, a set of methods and resources for interaction between web servers and clients at WWW. The resources are languages, interfaces, platforms, frameworks and architectures for content creating, distribution and utilization. Web technologies are proprietary and not always standardized and compatible (Figure 1.2). The most popular of them are CGI, ASP, ASP.NET, JSP, JSF, AJAX, ColdFusion etc., based on frameworks and platforms .NET, LAMP (WAMP, MAMP, XAMP), JSE (Java Standard Edition)5, JEE (Java Enterprise Edition) etc. Some of them (CGI, ASP etc.) are obsolete and not supported but still in use. On the other hand, new ones being created continuously. Here, the actual state to 2017 is discussed.

3 OSI (Open System Interconnection) is seven-level model of network architecture (http://support.microsoft.com/kb/103884). 4 A set of protocols managing data transfer between computers in internet and working in the network and transport layers of OSI. 5 www.oracle.com/technetwork/java/javase/overview/ 16

Figure 1.2. Schema of web technologies Web standard denotes formal non-proprietary set of rules and technical specifications about technologies for creation and interpretation of content in WWW. Lately, this concept is related mainly to the validation of good practices for web site development, including languages, design models and methods. These standards are supported by W3C (World Wide Web Consortium)6 and other standardization organizations (ISO, ITU etc.). Therefore, each web standard is one or more technologies endorsed by abovementioned organizations. 1.3.3. Software platforms Each web application is created or works on one or more software platforms. The concept software platform is too relative. For example, in the computer such is its operating system (Windows 2000, XP, Vista, Linux, Mac OS X etc.), on which the applications work. In general, any software that performs significant tasks is a platform. Thus, SQL – language for relational database management, registration and analysis in CRM (Customer Relationship Management) and ERP (Enterprise Resource Planning) systems, is platform. The web application platforms for (web platforms) include development environment, runtime environment and software framework. Otherwise, these

6 W3C (https://www.w3.org) is an international community to develop Web standards. 17 platforms are composed of subsystems building common infrastructure for elaboration and execution of multiple associated applications. The most popular web platforms are LAMP, .NET, JЕЕ, JRE7 (Java Runtime Environment) etc. 1.3.3.1. Integrated development environment Integrated Development Environment (IDE) necessarily includes a source code editor, compiler and/or interpreter, debugger and libraries. Moreover, it can include version control system, graphical user interface (GUI) tools etc. In the specialized literature often no distinction between a platform and development environment. However, the platform is a broader concept and includes resources for running applications outside their development environment. One might say that a platform can include one or more development environments and vice versa – an environment can work on different platforms. The platforms and the development environments could be classified by the architecture of created applications (see 3.1.1), by the function, the access type, the manufacturer etc. By the function they are:  Specialized environments for particular language – JаvaScriptCore8, Windows 8 JavaScript9, JRE, Perl Dev Kit (PDK)10, ActivePython11 and many others.  Environments for multiple languages (language stacks) as:

 Komodo12 – proposes full range of tools for dynamic web application development, including AJAX technologies with CSS, HTML, XML and scripting languages Python13, PHP14, Ruby15, Perl, JavaScript.

 Eclipse16 – mainly for Java and having additional modules for Ada, ABAP, C, C++, COBOL, D, Fortran, Haskell, JavaScript, Julia, Lasso, Lua, NATURAL, Perl, PHP, Prolog, Python, R, Ruby etc.).

 WinRT17 and many others.

7 http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html 8 https://developer.apple.com/documentation/javascriptcore 9 http://www.i-programmer.info/programming/winrt/3560-getting-started-with-winrt- .html 10 https://www.activestate.com/blog/2016/01/perl-dev-kit-95-released 11 https://www.activestate.com/activepython 12 https://www.activestate.com/komodo-ide 13 https://www.python.org 14 www.php.net/ 15 https://www.ruby-lang.org/en 16 https://eclipse.org 17 https://msdn.microsoft.com/en-us/magazine/mt745094.aspx 18

 Server database management systems:

 desktop DBMS extended with web modules, as: MS Access, FileMaker Server18, Postgres19, DB2, DBF Manager, FireBird, Ingres20, MongoDB21, Oracle Database etc.;

 dedicated web DBMS22: SQL Server, Remote DBS, Sentences, Zoho Creator23, PostgreSQL, Cloud SQL, AppGini, MTH (MyTaskHelper) and many others.  Combined multiplatform development environments called also software stacks or full stacks, including all necessary resources for web application elaboration – frameworks (libraries), servers and DB for one or more languages. Such stacks are:

 MS Visual Studio (see 5.6.5.3);

 LAMP (Linux/Apache/MySQL/PHP) and its variants WAMP, MAMP, XAMPP etc. (see 6.4);

 MEAN.io24, including MongoDB, Express.js25, AngularJS and Node.js26 (for JavaScript);

 MERN27 (MongoDB + Express.js + React + Redux + Node.js + Webpack);

 Ruby Stack: Ruby/Ruby on Rails, RVM28 (Ruby Virtual Machine), MySQL, Apache и PHP;

 Django Stack: Python, Django29, Apache, MySQL, etc. By the type of access, the platforms and IDEs are for fixed and mobile systems, depending on the computer connection to the network. The fixed system platforms working on screens between 15” and 24” have more evolved functionality given higher computing power and capacity. Many of them are also used for mobile web applications. The mobile wireless internet connection is provided by cellular network operators and ensures browser-based internet services (mobile web) for handheld devices

18 http://www.filemaker.com/products/filemaker-server/ 19 http://postgresguide.com/ 20 https://www.ingress.com/ 21 http://mongodb.org 22 http://www.capterra.com/database-management-software/ 23 https://www.zoho.eu/creator/ 24 http://mean.io 25 https://expressjs.com/ 26 https://nodejs.org 27 mern.io/ 28 https://rvm.io/ 29 https://www.djangoproject.com 19

(smartphones, tablets) with a small screen (average of 2.5 to 10 inches), sensor control and often without keyboard. There are special platforms and environments intended to mobile web application development (see 4.3). 1.3.3.2. Software framework Software framework is universal reusable platform, providing functionality or shell to build both individual applications and complete projects and solutions. It includes a set of libraries with reusable components (code abstractions), enveloped in well-defined Application Program Interface (API). Unlike ordinary libraries, the framework offers:  Inversion of Control (IoC)30 – a principle of reversing control in software engineering, concluding in breaking dependencies between levels of developer code by shared abstractions, i.e. portions of the code receive the control flow from the framework, instead code giving a flow of calls to functions in the framework (Figure 1.3).  Default behavior.  Enhancement - the developer can revoke or add own code for specific functionality.  Non-modifiable framework code, unlike the extensions added by the developer.  Compiler and other programs necessary for application software development.

Figure 1.3. Difference between library and software framework The same framework can work on different platforms (OS). For example, the PHP framework Laravel (or Symphony) works on Windows and on Linux also. The framework Spring MVC for Java requires Java platform, working on Windows and on Linux (two levels of platforms). Other Java frameworks are Vaadin, GWT, Grails, Struts and etc. 1.3.3.3. API

30 Повече информация може да намерите на адрес: https://www.martinfowler.com/articles/injection.html 20

As an element of framework, generally API is a set of clearly defined functions and methods for communication between software components. The best-defined APIs are those linking applications and OS. For example, OS offers API for execution user requests from application software to system functions. Similar are the requests for read/write file data, file structure support, connection to peripherals, working with windows, controls, dialog boxes etc. In that, the API executes commands invoking OS, interrupting and activation respective OS function and implementing requests. Other, commonly defined API are for various network services – sending and receiving data to/from local and global networks, communication with resources of mobile devices etc. The API functions are embedded in all development environments. 1.4. Content management systems In principle, the concept content management denotes a set of processes and technologies helping content collection, management and publication in any form or environment. The content can be textual, graphical or multimedia. Increasingly in recent years, the direct coding, requiring serious qualification is replaced by systems for automated creation and maintenance of web applications, known as Content Management Systems (CMS). They do not require the designer to know in details web technologies and in particular – to be web programmer. Typically, CMSs are relatively easy to learn and use. They have built-in visual editor for creating, updating and publishing content, adding or deleting files and folders on the server etc. Moreover, links are automatically updated. CMSs propose variety of ready modules as well as web application templates, for example, chat, forum, counter etc. installed easy in the pages. In that, CMSs are compatible with other simultaneously or successively used software environments (editors) for content processing. The first CMSs arise in 1995. Depending on the purpose and functionality, they are (Figure 1.4):

21

Learning Content Managem ent Systems Transactio Publicatio nal CMS (LCMS) (TCMS) n CMS (PCMS) CMS Image Component Content Content Managemen Manageme t System Enterprise nt System (ICMS) Content (CCMS) Manageme nt Systems (ECMS) Figure 1.4. CMS types  Enterprise Content Management Systems (ECMS) – about business process content (documents) gathering, management, storage and supply.  Learning Content Management Systems (LCMS) – for learning content development, management, support and supply.  Component Content Management System (CCMS) – for document creating using parts named web components. These components saved in CMS library are reusable and can be applied in other documents.  Image Content Management System (ICMS), in which users can upload and process photos, clips and images.  Publication CMS (PCMS) – for blogs and other social communications.  Transactional CMS (TCMS) – for example, e-commerce, money exchange, e- catalogs, etc. Often CMS are of mixed type. Nowadays Joomla31, Drupal32 and WordPress33 are the most popular CMS. They are open source, free, easy to learn and use. More specifically, WordPress is best suited for blogs and news. Other platforms designed for blogging are Blogger34, Tumblr35,

31 https://www.joomla.org 32 https://www.drupal.org 33 https://bg.wordpress.org 34 https://www.blogger.com 35 https://www.tumblr.com 22

Medium36, Svbtle37, Quora38, Postach.io39, Google+40, SETT41, Ghost42, Squarespace43, Typepad44, Posthaven45, etc. Drupal is good platform for e-commerce and enterprise applications, but requires knowledge about web programming. Moreover, it is quite clumsy for installation and use. Especially for e-commerce is SEOTOASTER V2 E commerce. Joomlа is universal CMS with richer opportunities than WordPress, but is relatively difficult to master. However, it is lighter than Drupal. For imagery galleries, besides the universal CMS, they are used platforms 4Images46, TextPattern47, CMS of INSYS48 etc. Other less known CMSs are Article Publisher, Bitrix, CMSBOX, eContent, Orchard, Host CMS, OpenCart and a few hundred free and open applications. But generally, CMS are very vulnerable to hacking attacks.

36 https://medium.com 37 https://svbtle.com 38 https://www.quora.com 39 https://postach.io 40 https://plus.google.com 41 https://sett.com 42 https://ghost.org 43 https://www.squarespace.com 44 https://www.typepad.com 45 https://posthaven.com 46 https://www.4homepages.de 47 https://textpattern.com 48 https://www.insys.bg/bg/cms 23