views:

73

answers:

3

I'm about to begin a Software Engineering course and am in the process of gathering the reading lists for each class, however one class, "Internet Programming", doesn't specify a reading list on the grounds that it would be out of date before it was even published, and so I was wondering if anyone knew any good modern books on the subject.

The modules that are going to be covered are:

HTTP & servers; An overview of client-side technologies; JSP; JSTL; RSS; Databases and Servlets; Soap and XML; Network Programming.

It's going to be financially impossible for me to buy a large tome on each of these subjects so I'm looking for one large 'bible', 1000 pages or more, that provides enough knowledge to go off and start coding a decent application, but isn't insubstantial enough that you would need to follow up with more specialized books in order to fully understand what's going on.

+4  A: 

You should check out this: http://stackoverflow.com/questions/194812/list-of-freely-available-programming-books

It's a thread on freely available programming books. I'm sure you'll find something useful there.

Evernoob
+4  A: 

I had been looking for an answer to a similar question for years: What's a good book about programming general web applications/sites/etc.? Unfortunately, I never found what I was looking for, perhaps for the reasons you specified (that it would be outdated), but more likely because there are myriad ways to approach "programming on the internet." For example:

  • You want to build a web site?
    • With just HTML?
      • Are you also going to program in Javascript?
      • Will you use CSS style sheets?
    • With a web framework?
      • Which web framework?
        • In the Microsoft Stack?
          • ASP.NET Web Forms
          • ASP.NET MVC
          • Classic ASP
          • SharePoint
        • or open source?
          • Ruby?
            • Ruby on Rails
          • php?
            • pick a php platform
    • How is it hosted?
      • dedicated server?
      • shared hosting?
      • virtual server?
      • Windows or Linux?
  • You want to write a web service?
    • On which platform?
    • ...

The list could go on forever. That's why entire books exist for each bullet point (and bullet points that go several nodes deeper than what I hinted at) and it is difficult to try to cram the whole universe of "internet programming" into a single volume (or several, for that matter).

What's best, and this is probably what your course is designed to do, is figure out what different approaches and options you have available to you in the domain of Internet Programming. After you figure out the types of problems you can solve in this domain, you can pick a specific approach to solving that problem. For example, if you decide that you want to focus on solving the problem of building a data-enabled website, you might choose to learn a web framework such as ASP.NET MVC or Ruby on Rails. Either of those options would give you plenty to learn and would expand your knowledge in the area of "internet programming."

Ben McCormack
+1  A: 

Sad to say I'd see the modules themselves as almost out of date, or perhaps to be more accurate incomplete. AJAX/Rest techniques and JavaScript libraries now feature much more heavily than JSP and JSTL, and possibly JSF could be seen as replacing JSP and JSTL anyway. I think it's a bit of a cop-out to not give you a reading list, a module on JSP for example could use a JSP book. The obsolescence come from changing the module not just changing the book.

Your desire for one big book is I think doomed. The topic is too large and the alternatives too many.

However if those literally are the modules and you want to do some prep then I'd get something like the Sun Core Servlet & JSP book. You will need to understand the servlet APIs at some level no matter what you do, and this is the heart of Java-based internet development. In the real world folks use various frameworks to hide much of the detail (for example Struts, Spring etc) but it seems your course is deliberately avoiding those. If your course is using JDBC for database access then I'd study those APIs from online resource. Again in the real-world frameworks such as JPA and Hibernate and conbinations thereof are increasingly used, so you might want to check which database technologies you are using in the course. If something like JPA I'd get a book such as this.

djna