Become a fan of Slashdot on Facebook

 



Forgot your password?
typodupeerror
×
Java

After Learning Java Syntax, What Next? 293

Niris writes "I'm currently taking a course called Advanced Java Programming, which is using the text book Absolute Java, 4th edition, by Walter Savitch. As I work at night as a security guard in the middle of nowhere, I've had enough time to read through the entire course part of the book, finish all eleven chapter quizzes, and do all of the assignments within a month, so all that's left is a group assignment that won't be ready until late April. I'm trying to figure out what else to read that's Java related aside from the usual 'This is how to create a tree. This is recursion. This is how to implement an interface and make an anonymous object,' and wanted to see what Slashdotters have to suggest. So far I'm looking at reading Beginning Algorithms, by Simon Harris and James Ross."
Books

Submission + - Putting Captcha's to good use.

Drewsk writes: "A story in CNN suggests that worldwide, we are wasting a total of 150,000 hours per day typing in the useless CAPTCHA's that webservers want in order to ensure we're humans and not robots. A new project underway, dubbed "reCAPTCHA" is an effort to put all that time to good use in much the same way that SETI likes to use our computer's spare time. In essence, all of the worlds books that are being scanned in to the Internet cannot all be read by OCR. Some have to be typed manually and others need passages clarified as words are unclear. The project wants to send those passages (words) out as Captcha's so we can all contribute to the world's online libraries... Read more."
Security

Submission + - P2P DoS?

mcgrew (sm62704) writes: "New Scientest is reporting that P2P networks, including BitTorrent, are being used to launch DDoS attacks. It was previously reported that this was "possible", but now New Scientest claims these networks are actually being used.

They created modified versions of BitTorrent files, and their own "tracker" a computer, which stores the databases that peers use to find one another on the network. Then, using 25 bogus files, they were able to trick more than 50,000 computers into cooperating within a few hours. "We needed to do some hacking in the BitTorrent code," says Karim El Defrawy, a member of Markopoulou's group. "But anyone with some small programming experience could do this."
Somehow, this sounds lika MAFIAA FUD to me; New Scientest has poisoned its "science" with politics before, usually when reporting research about marijuana. Can anyone shed more light on this? Fromn the description they give, it seems you would DoS your own computer before you could bring anyone else's down using this technique."
Communications

Submission + - Compensation for cell phone signal traffic?

ehud42 writes: "The CBC is reporting that "Manitoba First Nations are seeking compensation from Manitoba Telecom Services for every cellphone signal that passes through First Nations land, saying the airspace should be considered a resource like land and water." Is the airspace around us a resource like land and water? Would I have to pay someone for my wireless signals travelling through their airspace? I doubt this will get much traction — at least I hope not..."
Programming

How to Keep Your Code From Destroying You 486

An anonymous reader writes "IBM DeveloperWorks has a few quick tips on how to write maintainable code that won't leech your most valuable resource — time. These six tips on how to write maintainable code are guaranteed to save you time and frustration: one minute spent writing comments can save you an hour of anguish. Bad code gets written all the time. But it doesn't have to be that way. Its time to ask yourself if its time for you to convert to the clean code religion."
Wireless Networking

Submission + - Palm's Jeff Hawkins Intros "Smartphone Compani

giffnyc writes: "This morning at the Wall Street Journal's D5 conference, Palm Pilot inventor Jeff Hawkins revealed the product he had hinted at in September of 2005. A slim notebook like factor and Linux based OS power a "smartphone companion". The device has WiFi, but also links via Bluetooth to your smartphone, sharing the connection and intelligently syncing email, contacts, etc. All flash driven, the device is instant-on. Checkout TreoCentral for the developing story. Aside from a dedicated keyboard, how different is the thinking on this device from Nokia's Internet Tablet series?"
Enlightenment

Submission + - A Green Brick and the Mind Behind it

An anonymous reader writes: Popular Science is running a feature on Henry Liu, inventor of the fly ash brick. Though initially an accident, Liu's brick (made from the byproducts of coal-power plants) costs less and is more-environmentally friendly than its counterparts. Great timing, too, as the NSF just released a safety report noting that the brick not only pollutes less, but even manages to pull small amounts of toxic metals from the surrounding air. It's the type of seemingly small innovation that could very well revolutionize entire cities.
Java

Submission + - Computer Graphics with Java

Michael Grady writes: "Computer graphics has become an indispensable part of mainstream computing and the undergraduate course in computer graphics programming is often one of the most popular courses in the curriculum. In the early days, such courses dealt with low level implementation details and algorithms such as converting lines to pixels, filling rectangles, view clipping and anti-aliasing.

When OpenGL arrived on the scene, it was welcomed as an efficient and powerful, procedure-oriented library that kept many of the low level details out of sight. The sort of projects that could be tackled in an introductory course became much more impressive.

But that was back in the 90's. Is there a way to build a course covering the basic computer graphics concepts and techniques which takes advantage of object orientation and higher levels of abstraction? I believe the authors of Computer Graphics using Java have found a way.

Their strategy is to teach by example using the comprehensive, high level interfaces provided by Java 2D and Java 3D. Their examples are often well chosen and fun. The programming exercises are entertaining and appropriate.

About one third of the book is devoted to 2D graphics and covers the usual topics: coordinate systems, modeling, constructive area geometry, color models, affine transformations, compositing, splines, clipping, fonts, raster images, animation and image processing. As anyone who has worked in this area knows, Java 2D provides a beautifully designed set of classes for high quality 2D graphics and imaging. This part of the book could also serve as an excellent introduction for any programmer who wants to begin exploring its functionality.

Where the book really shines is in the examples. My favorite 2D examples include:
  • An interactive demo of the RGB Color model which also illustrates constructive area geometry.
  • An efficient rendering of the Mandelbrot set as a raster image.
  • An elegant analog clock that shows how to use the Timer class in animation.
  • An interactive demo of the common 2D affine transformations.


Surprisingly, none of the code uses anti-aliasing, even though Java 2D does a great job smoothing rough edges. In computer graphics circles, this is a faux pas — a violation of accepted, although unwritten, social rules, and points must be deducted for this omission. But if you add the required one line of code, most of the examples look pretty good.

The last two thirds of the book are devoted to 3D graphics programming, which reflects a common emphasis in the course at the undergraduate level. Coverage includes scene graphs, the rendering pipeline, 3D modeling, affine and projective transformations, illumination and reflection models, texture mapping, adaptive rendering, animation and interactivity, as well as object oriented graphics concepts such as behavior dynamics.

Java 3D provides a high level, object oriented framework for 3D graphics programming, with about 360 classes. For those who are used to programming with OpenGL, the Java 3D mindset may require a bit of indoctrination. It's based on the concept of a scene graph, and makes a lot of sense from an object oriented programming viewpoint.

Basically, a scene graph is a data structure for organizing the objects of a scene. We mean objects in the object oriented sense. Java 3D objects may be responsible for geometric, transformation, illumination, shading or behavioral data. The nodes of the scene graph represent objects and the edges represent a necessary connection. For example, a transformation node may be connected to a node representing a cube. The corresponding transformation object defines how the cube should be rotated, scaled, etc. In traversing the graph from its root, the Java 3D rendering engine finds all the information required to render the scene. It's a cool way to do computer graphics at a higher level of abstraction than programming directly with OpenGL.

Once again, many of the examples are excellent for an introductory text. My favorite 3D examples include:
  • The classic spinning dodecahedron. This example shows that setting up the scene geometry is pleasantly intuitive in Java 3D. The ease of computing the normal vectors of all plane surfaces using the NormalGenerator class is a good illustration of the power of object oriented programming. Transformations, lighting and material properties are handled by dedicated classes.
  • An interactive illustration of the common 3D affine transformations showing the effect of modifying transformation matrices.
  • The mirror image of rotating 3D text that demonstrates the effect of composing transformations.
  • How to generate a torus mesh.
  • The canonical Utah Teapot.


And once again, surprisingly, the code does not use anti-aliasing, even where it is badly needed.

All in all, it's clear that the authors are excellent teachers. This shows in their effective use of the teaching-by-example style.

As stated in the preface, the authors intended their book for students and computer professionals who want to learn basic computer graphics concepts and techniques and who want to get started in programming with the Java 2D and 3D APIs. I believe they have succeeded in this goal, and if you are in this group of readers, I can confidently recommend their book.

One of the benefits of using the Java platform is the extensive support for networking, multithreading, multimedia, database access and web services. For the most part, none of these benefits are exploited in the text. But that is probably the subject for a second course in computer graphics using Java.



References:

Book website:

http://www.cs.armstrong.edu/liang/graphics/graphic stoc.html



Project homepage for Java 3D:

https://java3d.dev.java.net/"
Printer

Submission + - New Details on Xerox Inkless Printer

Iddo Genuth writes: "Xerox is developing a new printing technology which does not require ink of any kind. The new technology includes reusable paper which can be printed and erased dozens of times and has the potential to revolutionize printing. New details on this upcoming technology, which was first reported on September 2006, are now revealed."
The Internet

Submission + - The Pirate Bay to stay in Sweden

paulraps writes: The Pirate Bay has ditched plans to buy its own nation so as to avoid international copyright laws. One of the founders says that the operation is now less vulnerable to police raids in Sweden now that it has spread its servers around different locations. Amusingly, they may still buy an island, but for more modest reasons: "We have 20,000 to 25,000 dollars to spend. Really we just want somewhere we can name The Pirate Bay, so we can look on Google Maps and find ourselves there," said Tobias Andersson, who, despite running the most poopular site in Scandinavia, still works as an electrician.

Slashdot Top Deals

There are two ways to write error-free programs; only the third one works.

Working...