Major
Course Concepts
1. Large volume of
lighter concepts.
We’ll go over a great many different areas this quarter. Here’s a rough list:
a. Sysadmin for web server setup and maintenance
b. JDBC API
c. Reflection
d. XML
e. HTTP and HTML
f. Logging and JUnit testing
g. JSP, JSTL, and EL
h. SSL and site security
i. Annotations
h. ORM/Hibernate
j. JSF
k. Internationalization
l. Java 1.5 features including templates, enumerations, etc.
None of these, with the exception of Hibernate, involve very deep concepts, at least not on the level of algorithms or theory, but collectively they will require a great deal of learning. This is typical of modern software development.
2. Integration of various systems
The advances in libraries and tools make it possible to do far more than we could have even 10 years ago (the websites we’ll build this quarter would have taken thousands of hours of effort to build directly in C with no libraries). But the price is learning the libraries and software components that come together to make a modern webdev environment.
3. Testing challenges
Dynamic websites are highly threaded, and receive constant “interesting” input from users, both friendly and malicious. Also, they are expected to undergo continual revision and upgrading, sometimes even on a daily cycle. This necessitates automated testing, and requires that you design with such testing in mind.
4. Scaling challenges
Any successful website will need to handle very high volume, perhaps thousands of simultaneous web sessions. This in turn requires special design considerations, lest you paint yourself into a nonscalable design that requires complete rewrite when put under stress.
5. Sophisticated
language use (Java at least)
Reflection, annotations, memory management, and other newer Java features are not obscure details of the language in web development. They’re standard language features that you’re expected to know as well as you know for-loops or if-statements.
6. Lifelong learning
Web development is a frenetic cauldron of design and redesign, in which yesterday’s hot new library or component is today’s has-been (e.g. EJB), and yesterday’s special feature is today’s necessity (e.g. internationalization and AJAX). Where a skill like a programming language might last you as much as 10-20 years professionally, a web dev skill will last you less than 5. And for all the best of intentions, your employer will be too pressed to get today’s product out the door to give you the time to revise the software you’re doing to use new technologies. So, you need to have strategies for learning the new stuff as it comes along, and for getting work in new areas professionally as needed.