Wednesday, September 06, 2006

JShell contd...

I'm still working on JShell, which has grown in leaps and bounds, but is still far from complete. Myriad reasons for this:
  • I need to come to terms with a lot of technology:
    • JavaCC : whose static parsers i've cut loose from
    • Swing : which I always held at a distance, and whose nuances i came to appreciate a few invokeLater()s later :(
    • logging: which I played catch up with from a philosphical perspective - is JUL better or log4j? - my current bet is the latter
    • threading and IPC: how do you handle redirecting the child process' i/o streams from the parent when it is itself broken into framework and configurable pieces
    • unit testing: do i really want to go for broke and write unit tests for my gui code as well?
  • I need to decide how far I want to really take this "All Java, and all portable" ideal, bcos:
    • For the most part, I'm using Textpad for editing - i might as well use eclipse, but its waaay huge!
    • The commandline is a poor man's ant for now - especially considering jshell dogfood release was broken
    • There is no "All java, all portable" version control software. Hmm...there's another project that I did research for a while
  • I got the architecture bug for a while and subjected the jshell code to analysis via sa4j and lattix. The former I've used before, and while I sorta "get"their global butterflies and breakables and hubs, there doesnt seem to be a clear direction from the tool where to go from there. IMO, the Summary and the skeleton view are the most useful as they (respectively) let you see how stable your architecture is from a numbers and visualization perspective. As for lattix, I can intuitively see the value of the DSM tool, and looking at the jshell code in lattix helped me "see" the structure better, tho I've not got the hange of the theory behind it. I tried building the DSM manually using the rules mentioned in an article on lattix, but somehow ended up getting a uses/used by count much higher than the tool itself - so not able to validate the results. Things I liked about the tool:
    • The concepts of constraints and rules to verify architecture after the initial run is imo pretty good in concept. Code visualization tools definitely need to get more qualitative.
    • The ability to regroup code into new logical packages is vital to "extracting the true architecture". This is one feature I've seen in Headway Review that made a lot of sense to me - especially when visualizing large codebases that you've just been introduced to , and are expected to provide expert opinion on.
    • The fact that it really can scale - its essentially an n x n spreadsheet - and requires a row for a class unlike pictorial tools.
Anyway, life goes on, and in between, I steal time for jshell. Its gettin there :)
And then Account Management.
Long way..