-
Notifications
You must be signed in to change notification settings - Fork 61
Expand file tree
/
Copy pathindex.html
More file actions
127 lines (90 loc) · 5.34 KB
/
index.html
File metadata and controls
127 lines (90 loc) · 5.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
---
title: Server Tutorials
layout: left-and-right-navs
thumbnail: /tutorials/java-server/images/java-ee-1.png
categories: [tutorials, java]
meta-title: Java Server Tutorials
meta-description: Learn how to create dynamic web apps!
meta-image: /tutorials/java-server/images/servlets-7.png
sort-key: 500
redirect_from: /examples/java-server
---
<div class="section content">
<h1>Java Server Tutorials</h1>
<p>These tutorials assume you're already familiar with the fundamentals of coding, and that you've already read <a href="/tutorials/java">the Java tutorials</a>. You should also be familiar with client-side web programming from the <a href="/tutorials/html">HTML</a> and <a href="/tutorials/javascript">JavaScript</a> tutorials.</p>
</div>
<div class="section content">
<h1>Running a Server</h1>
<p>Pick a server and run with it.</p>
<p>Not sure which to choose? Try each one out and see which one you like the best!</p>
<div class="thumbnail-link-container">
{% include url-thumbnail.html url="/tutorials/java-server/tomcat" %}
{% include url-thumbnail.html url="/tutorials/java-server/jetty-setup" %}
{% include url-thumbnail.html url="/tutorials/java-server/embedded-jetty" %}
</div>
</div>
<div class="section content">
<h1>Javax vs Jakarta</h1>
<p>Java EE has a long and complicated history which can make tutorials and examples confusing. I'll try to simplify it as much as possible so you know what you're looking at.</p>
<p>Java EE stands for Java <strong>E</strong>nterprise <strong>E</strong>dition. "Enterprise" means "business", because back when it was invented in 1999, the only websites that needed server code were owned by businesses. Since then, server code has been used by many people, not just businesses, but the name stuck.</p>
<p>From 1999 to 2019, Java EE was continually developed by Sun and then Oracle. They launched several versions of Java EE, which included several versions of the Java servlets API. They released their code under the <code>javax</code> package, for example the <code>javax.servlet.http.HttpServlet</code> class.</p>
<p>Then in 2019, Oracle gave Java EE to the <a href="https://www.eclipse.org/org/foundation/">Eclipse Foundation</a>. But here's the weird part: they didn't let the Eclipse Foundation use the name "Java" or the <code>javax</code> package.</p>
<p>That meant that after 2019, Java EE was renamed to Jakarta EE, and the code itself was moved to a new <code>jakarta</code> package, for example <code>jakarta.servlet.http.HttpServlet</code>.</p>
<p>In other words, old tutorials will talk about Java EE and use the old <code>javax</code> package, but new tutorials will talk about Jakarta EE and use the new <code>jakarta</code> package. This also means that if you download an old version of a library or server container, it might only work with the old <code>javax</code>package, but new versions of libraries and server containers will only work with the new <code>jakarta</code> package.</p>
<p>This is all really confusing, so if you have a question, please reach out to me on <a href="https://forum.happycoding.io">the Happy Coding forum</a>)!</p>
</div>
<div class="section content">
<h1>Java Server Tutorials</h1>
<p>After you've run a server, read through these tutorials in order.</p>
</div>
<div class="section content">
{% include tutorial-chapter.html url="/tutorials/java-server/web-app" chapter=1 %}
</div>
<div class="section content">
{% include tutorial-chapter.html url="/tutorials/java-server/client-server" chapter=2 %}
</div>
<div class="section content">
{% include tutorial-chapter.html url="/tutorials/java-server/servlets" chapter=3 %}
</div>
<div class="section content">
{% include tutorial-chapter.html url="/tutorials/java-server/jsp" chapter=4 %}
</div>
<div class="section content">
{% include tutorial-chapter.html url="/tutorials/java-server/eclipse-ee" chapter=5 %}
</div>
<div class="section content">
{% include tutorial-chapter.html url="/tutorials/java-server/post" chapter=6 %}
</div>
<div class="section content">
{% include tutorial-chapter.html url="/tutorials/java-server/libraries" chapter=7 %}
</div>
<div class="section content">
{% include tutorial-chapter.html url="/tutorials/java-server/sanitizing-user-input" chapter=8 %}
</div>
<div class="section content">
{% include tutorial-chapter.html url="/tutorials/java-server/sessions" chapter=9 %}
</div>
<div class="section content">
{% include tutorial-chapter.html url="/tutorials/java-server/secure-password-storage" chapter=10 %}
</div>
<div class="section content">
{% include tutorial-chapter.html url="/tutorials/java-server/thread-safety" chapter=11 %}
</div>
<div class="section content">
{% include tutorial-chapter.html url="/tutorials/java-server/hosting-aws" chapter=12 %}
</div>
<div class="section content">
{% include tutorial-chapter.html url="/tutorials/java-server/hosting-google-app-engine" chapter=13 %}
</div>
<div class="section content">
{% include tutorial-chapter.html url="/tutorials/java-server/databases" chapter=14 %}
</div>
<div class="section content">
{% include tutorial-chapter.html url="/tutorials/java-server/uploading-files" chapter=15 %}
</div>
<div class="section content">
{% include tutorial-chapter.html url="/tutorials/java-server/rest-api" chapter=16 %}
</div>
<div class="section content">
{% include tutorial-chapter.html url="/tutorials/java-server/struts" chapter=17 %}
</div>