Translate

Monday, March 04, 2013

Listening to the language

For a while now I've been focusing this blog on my open source project as I think more about it and try to understand what it is, where it is, and where it should go.

One thing that I realized recently while doing these considerations is that it makes sense to just ask a computer language things and Java lets you do that with the Reflections API and Class Viewer is using that to give you information.

So you're asking the Java language and shouldn't all the various computer languages let you do the same?

So, as a developer when I use Class Viewer I'm getting questions answered from the current Java version I'm using, coming direct from the language itself as it talks to me.

And I can ask questions like, if I go to the String class I can ask, if I know how to use the program, which methods take char?

That's my simple example that I like to use as the String class is so familiar. But you can ask so many more questions and just fiddling with things I've been amazed myself at how flexible it is, especially when you use the search field, which will give you inherited methods.

So why not just listen to the language? If you wish, Java will talk to you. And isn't that just really cool?


James Harris

Wednesday, February 27, 2013

Running Class Viewer

My open source application Class Viewer is meant for Java developers, who presumably want to get the best method to write the best code, so they should have certain skills with Java. And one debate I have had with myself is whether or not I should use a universal installer for downloads. But I think that is more than necessary, as I'll explain how I test download.

I usually download the zip file, but do download the tar-ball file at times to test as well, and unzip it. Then I just double-click on the ClassViewer.jar which will run on many systems as it is an executable jar. Things should be ok at this point as ClassViewerConfig.xml should have unpacked next to the app. The app will give you a little message if it cannot find it! I added the feature that it will also tell you where it is looking for the file.

And if the above works, you can just use it immediately, and I like to use the String class as my test case.

And that is what I do with my test download. It's that easy and that fast. Unpack and double-click on the ClassViewer.jar and try a class.

And the above is just for playing around and seeing that it works! If you use the Firefox browser you can do a search for methods and immediately go to the web to JavaDocs, as Class Viewer will call Firefox out of the box. So don't get surprised if that happens! It's totally normal.

There is where there is an adjustment for your browser, which I don't think is reason enough to bother with an installer. To change your browser, open ClassViewerConfig.xml, where I recommend a text editor, and go to the browser section where you will see Firefox, and change it to your browser! Save, and restart the program. Now it will use your browser.

But for the real work, you'll want a full classpath, and when I run it as described above I don't get one, so the primary way I run to get the full classpath is from the command line.

First you need to unpack the code from the Jar file.

That is done with: jar xf ClassViewer.jar

Then you just use the command: java com.jstevh.viewer.ClassViewer

Or some variant on that theme which of course Java developers, the intended audience would know.

Now the program will have the full classpath.

And that is how you get going immediately. I think an installer is more than necessary, where the one area where plenty of people may change things immediately is with the browser, so why not autodetect the browser? I'm not sure. Sometimes I don't remember why I don't do certain things. If there is any demand for that feature I'd see about adding it.

But going into ClassViewerConfig.xml is important anyway, as you will presumably wish to add more packages including your own. So learning how to do it early shouldn't hurt, and I just use a text editor. Open it up, make some quick changes, save it, and restart Class Viewer and back in business.

If you have any thoughts on the above or suggestions, please comment! Curious about whether others feel like I need to give a different experience for users who download Class Viewer for Java.


James Harris

updated: June 28 2014--changed from packagedirectory.xml to ClassViewerConfig.xml  __JSH

updated: May 20 2017--minor edits to improve visual clarity and emphasis  __JSH

Tuesday, December 04, 2012

A GUI appeal?

As the years have gone by I've looked at my open source Java project Class Viewer as something of a puzzle to be figured out, as to how I should handle it. And with downloads growing on a year-over-year basis, in over 100 countries, I have decided at least I should give more information for people who are using the application.

So I have been doing posts meant to give more information, like my view that the application is in essence a GUI on Java Reflections API, with quick access to Javadocs. And those were the key features I wanted, and with them I have a tiny application in terms of lines of code, which doesn't in my opinion need many updates. And in eight years I haven't done many.

Since I was a professional software developer at one time, and even was a team lead on a multi-million dollar project, where I was the person who wrote the document for the project for unit testing, I think I should explain even more. For instance I didn't put a unit test framework into the project.

The reality is, I didn't design the project much at all, as it started as test programs for the Java Certification exams.

So refactoring has been on the to-do list for years now, if I ever figured everything out.

And I had already left working as a coder by the time I put it up on SourceForge and had vague ideas of how things might go, like maybe I'd end up with a bunch of other people interested who could polish out the product, but that didn't happen. And it has stayed a single developer project.

Weirdly enough, I've been looking at downloads for years with very little information except a number, like 10 downloads in a particular day, which isn't exactly inspiring. But SourceForge began giving more information like countries, and then it was cool!

Suddenly I found out I had an application with downloads from over 100 countries.

And, um, my attitude began to change.

And I guess it's remarkable that the project has done ok for years with me puzzling about how to proceed with it, and limited development but my theory is that I have a very focused problem space, and most importantly did ok with the graphical user interface aka GUI.

It is built to be as easy as possible with big screens that I want to be intuitive, where you don't need much instruction on how to use it. (I think.)

Rather than focus on a lot of features I was deliberately minimalist, wanting to have only just as many as I thought were necessary, and I just rewrote the top left command bar completely as I just so thoroughly disliked the File, Edit, View format. So I just threw it away. THAT was a lot of fun.

How well did it all work? I don't know. Sure I have growing downloads but not a ton of them, but it's a Java developer tool, so a smaller possible base, but also presumably a very picky one. Still being around after eight years with steadily increasing downloads I think is definitely a plus.

Who knows where things will go from here, but hey, if you want to give me feedback, feel free! It would be helpful. Commenting tools are much better today as the web continues to evolve, and I'm in an assessment phase as I try to figure out where things are with the project.

But in the meantime least I can do is give more information to people who could have been using Class Viewer for years wondering what was going on.


James Harris

Saturday, November 17, 2012

Cream colored San Francisco sky

Here's another older photo I found again recently. Taken with my Canon Powershot, December 2008.


Thursday, November 15, 2012

North Beach neighborhood

Here's a recent photo taken March 10, 2012. I was intrigued by the sign, but also like the neighborhood which is called North Beach. I was using a smartphone for this picture, a Motorola Droid 2.