Java 6 Features w/ Venkat Subranium
On this third day of christmas I started of in Venkat's Java 6 features talk, which was rather enlightening. He talked about how Java 6 has integrated the use of scripting languages into the java language and how scripting languages can use the java libraries on their own. You can also pull in script files into your java code, run them, and play around with the results of the run code.
Something that peeked my curiosity a little more was the next feature he talked about: instantiated an instance of the compiler and being able to compile and run new code at runtime. That's freakin' awesome. You could do some pretty fun AI functionality by setting up some program that would write, compile and run code all on its own. I think about having just a simple Body class sitting on a server somewhere. It doesn't have much... just one method that takes in a filepath. I'll send that sucker an Arm class.. The body reads and runs that Arm class and instantly makes it its own. Pretty handy.
Eventually if you quite giving more intelligent body parts it might be able to start writing up code for making its own limbs and the code monster keeps growing... Then the terminator would come back through time to kill me.
Advanced Selenium w/ Neil Ford
Anywho... the next panel I went to was Selenium which was also pretty slick. Even though we use Selenium at work, i never really knew what it was about. I thought it was just some JavaScript testing tool... but i guess i got that backwards. Selenium is a testing tool written in JavaScript. You can, or write Java code to, fill out table information representing actions taken to traverse your website. Stuff like.. fill in User text field with 'NameString', click on login, click on this and that, buy this, logout, all the while sticking in several asserts to make sure your system is doing what you want.
This is a fantastic way to test your webframe work. Just input all your Use cases into Selenium, hit play, and it'll return all the infractions of your Use cases for you. Huzzah.. No need to run through everything on your own.
You could also setup Selenium to run a bunch of macros that will get your within your system quicker..
Expert Panel @ Lunch
After lunch was the expert panel discussion, which had 8 or 9 speakers take questions from the crowd. The question of 'how should students be taught programming basics and lore when there are so many modern day languages and tools that remove the need to explicitly know about them?' was posed. Problems are posed when teaching students only Java as language, because then they know nothing of garbage collection and memory leaks. Problems are posed when teaching students a loosely typed language, because then type know nothing of type casting and such. Where do teachers begin the learning process, yet still get them up to speed with the technologies of today.
Everyone on the panel said their peace about their thoughts.. Certainly, the consensus was don't tie them down to one language and CERTAINLY don't tie them down to one platform. No one language is infinite. One quote from the weekend was, "Don't think of software as gold bars sitting in a vault.. Software is more like lettuce. If you let it sit, it will degrade and rot away.. " This is true with all technologies in this field. You have to keep current to be a valued member of this industry or else you'll be structurally unemployed sooner than you think.
This really extends further to almost all industries.. All industries evolve..
As an addendum, they added, that that's not to say forget about the past.. You don't need to know how to write code at the byte code level, but you should definitely know how that byte level code is used. You should know the inner workings of the constructs you are building on. Computers aren't MAGIC.. they are technological devices built on technologies built on technologies.. If you don't know how the technologies you are using as a foundation, then you have no business building on them.
Another topic brought up during this time was open source technologies with the slogan, "get your ass out there and help out" Open source communities are the main driver's for developing these technologies, not just creators of the technologies.. The communities are the ones that pick up the left over parts, fix bugs and clean up the code which shapes and completes the projects.. Even if you needed a selfish reason to work on something, think of the scenario of coming into a job interview and being able to say that you worked on that open source technology that that company is currently using. Dump that on your resume.
Reflection w/ Ted
After such stirring lunch conversation, the sessions started up again. I attended Ted ___'s guide to reflection. Reflection is basically making an object that is the representation of a class. This object has all the methods and fields, but this is not an instantiation of the class itself. With reflection you can actual get to private data and methods.. Which is handy in some instances..
This is also how annotations are utilized. When you grab the class, you can get the annotations from that class and process that information. huzzah. This was a repeat of Venkat's annotation talk the previous morning.
10 Ways to Improve your code w/ Neil Ford
stuff to come...