Engineering Full Stack Apps with Java and JavaScript
Internet is a global system of interconnected computer networks that connect various Domain Name System (DNS) servers, web hosting servers, home and business users, etc. Internet is a network of networks.
Lot of data transfer happens in an internet between computers and networks, and there should be some rules to regulate these transfers. A communications protocol is a system of digital rules for data exchange within or between computers.
Some of the important protocols of internet are:
TCP (Transmission Control Protocol),
IP (Internet Protocol),
UDP (User Datagram Protocol),
HTTP (Hypertext Transfer Protocol),
FTP (File Transfer Protocol) and
SMTP (Simple Mail Transfer Protocol).
The Internet protocol suite is a set of communications protocols used for the Internet and similar networks. It is commonly known as TCP/IP, because it’s most important protocols are the Transmission Control Protocol (TCP) and the Internet Protocol (IP), and they were the first networking protocols defined in this standard.
Transmission Control Protocol (TCP) is a connection-oriented protocol that provides reliable, ordered, error-checked delivery of packets.
Internet Protocol (IP) has the task of delivering packets from the source host to the destination host solely based on the IP addresses in the packet headers.
UDP is a connection-less protocol that does not provide reliability, order or error-checking. UDP messages are referred to as datagrams and a datagram is defined as a basic transfer unit associated with a packet-switched network in which the delivery, arrival time, and order of arrival are not guaranteed by the network.
HTTP is the protocol to exchange or transfer hypertext. Hypertext is structured text that uses logical links (hyperlinks) between nodes containing text.
The World Wide Web (abbreviated as WWW or W3) or the web is a system of interlinked hypertext documents accessed via the Internet. With a web browser, one can view web pages and navigate between them via hyperlinks.
FTP is a standard network protocol used to transfer files from one host to another host over a TCP-based network.
SMTP is an Internet standard for electronic mail (e-mail) transmission across Internet Protocol (IP) networks.
Websites and pages over the internet have a unique worldwide address called the IP addresses (e.g. 192.168.1.6), but a domain name (e.g. javajee.com) is used to refer to a website as it is easy to remember.
There are two versions of IP specification in use now: IPv4 and IPv6. IPv4 is the most widely used version currently. An IPv4 address contains 4 parts and each part will be a number between 0 and 255, e.g. 192.168.1.6. An IPv6 address has 8 parts and each part must be a hexadecimal number between 0 and FFFF, e.g. FF3:9B3D:999:0:FF12:420:20:444D.
Domain Name System (DNS) provides a mapping between domain names like javajee.com and IP addresses like 192.168.1.6. When we type a domain name like javajee.com in the browser, it will use DNS to resolve or find the IP address and browser then uses the IP address to connect to the correct machine.
A web application is any application software that runs on a server and we can access it using a web browser client. For instance, consider this website; you access it using a client browser, but it is deployed on a server located elsewhere.
Popular server side technologies used to create web applications include JSP/Servlets, ASP, PHP etc. These server side technologies will require corresponding software libraries to be installed at the server side.
A web server is software that helps to deliver web content (web pages) to the clients (e.g. web browser) through the Internet using HTTP protocol. Some of the commonly used web servers are Apache web server, Microsoft Internet Information Services (IIS), Nginx Nginx (pronounced "engine x") and GWS (Google Web Server). Other older web servers include Jigsaw web server from W3C, Oracle web server and Xitami web and FTP server developed by iMatix Corporation.
Java web containers like Apache Tomcat also can act as a web server, but is usually used along with another web server like Apache server.
A web browser (e.g. Internet Explorer, Google chrome, Mozilla Firefox and Opera web browser) can read HTML documents and compose them into visible or audible web pages. JSP (Java Server Pages) based on Java, ASP (Active Server Pages) based on .net or the open source PHP (PHP: Hypertext Preprocessor) pages, all finally generate html pages with other client side technologies like JavaScript and CSS, and is sent to the web browser. Try viewing the source of any web page through the view source option and you will only html, JavaScript or CSS, but no JSP, ASP or PHP.
A cookie is a small piece of data sent from a website and stored in a user's web browser while the user is browsing that website. A cookie is also known as an HTTP cookie, web cookie, Internet cookie, or browser cookie. A website usually uses cookies to store preference information, session identification data or insensitive user information. A cookie is a form of temporary storage on the client side and their integrity cannot be guaranteed. The user is free to modify them or delete them and is usually cleared when the browser cache is cleared. Cookies may not be supported in some browsers and may even be disabled. Hence programmers should not rely on cookies and should provide alternate means. The security model of cookies is also very strict: they are stored based upon domain name and may also optionally depend upon the exact path to the resource that saved data into them, and a browser usually saves each websites cookies in a separate file.
A uniform resource identifier (URI) is a string of characters used to identify a name of a resource. Such identification enables interaction with representations of the resource over a network, typically the World Wide Web, using specific protocols. Schemes specifying a concrete syntax and associated protocols define each URI.
URI is an abstract concept and the two concrete forms of URI are
uniform resource locator (URL), which is most common and is frequently referred to informally as a web address. E.g. http://www.ososys.com/internet-and-web-technologies.
HTML, JavaScript and CSS are three important client side web technologies which can be understood by a web browser and are independent of the server side technologies like JSP, ASP or PHP. As you have seen, JSP, ASP or PHP pages are finally converted to client side technologies such as HTML, Javascript and CSS, and sent to browser.
HTML (Hypertext Mark-up Language) is a markup language used to mark-up the different elements of a web page like headings, paragraphs, tables, images etc. Without markup, the contents will just appear as normal text without any headings, paragraphs, tables or images. A web browser (e.g. Internet Explorer, Google chrome, Mozilla Firefox and Opera web browser) can read HTML documents and compose them into visible or audible web pages.
Cascading Style Sheets (CSS) is a style sheet language used for describing the presentation semantics (the look and formatting) of a document written in a markup language like HTML. CSS is designed primarily to enable the separation of document content (written in HTML or a similar markup language) from document presentation, including elements such as the layout, colors, and fonts. You can also define the look and feel using HTML alone, but that is not a good practice. One of the advantages of using CSS is that you can change the look and feel of a page just by changing the style sheet and don’t have to change the web page itself.
JavaScript (JS) is a dynamic programming language understood by web browsers. We can write client-side (browser) scripts using JavaScript to create dynamic content on web pages like scrolling text, expanding menu etc., interact with the user, validate user inputs at client side, communicate asynchronously with a server, and even alter the document content that is displayed. JavaScript is not related to Java through the name is similar and there is some syntax similarity. JavaScript is not limited to web browsers, but can be used in many areas like mobile and desktop applications. There are many JavaScript libraries that provide some JavaScript functions out of the box and we can just use them without writing them again. Popular such libraries include JQuery, Angular JS, Dojo Toolkit, Ext JS, Microsoft's Ajax library etc.
Most of the definitions in this note are taken from Wikipedia. You can refer to the individual topic pages in Wikipedia for more details.
We will focus more on Java and server side development in this notebook. For further reading related to client side technologies and general concepts on internet and web technologies, please refer to the notes @ http://www.ososys.com/internet-and-web-technologies.