Hi,
I have got an email from Mark that it was not your intention to propose
jar tool as a part of GSoC program, because of the simplicity of this
task. I agree with you that it is quiet simple task, maybe too simple
;-) However I was asked to provide some detailed information about the
GUI tool I was intended to provide (as an addition to console one). I
have written down some major functionality of such interface. I must
mention that you can find some of the descriptions not complete, that’s
because I have planned it earlier, only as a small addition and haven’t
had enough time to create a coherent vision. I would like to know what
do out think about it? Will Apache Harmony benefit from such kind of
tool? Or maybe it is completely unnecessary? ;)
This tool would consist of two main parts: file navigator and main
window. As a file navigator I understand the directories tree, as a main
window – the normal window to display files (similar to the one from “My
computer”, etc.). There would be also some toolbar and some menu. Below,
you can find major use cases I have thought about:
1. Creating JAR file
This is one of the basic functionalities. User will be able to select
proper file and directories he wants to pack into archive. Then he will
choose ‘Create JAR’ option from menu or toolbar. The settings window
will appear and user will be able to specify several options, like:
- Name and location of output file
- JAR index creation (yes/no)
- JAR signing settings
- Set Manifest and entry point values
- Create optional JAD descriptor
2. Listing JAR file
When user marks the JAR file in navigator, he will see its content
(included files and directories) in main window, and will be able to
navigate through it.
3. Extracting from JAR
Extracting process will be similar to the JAR listing. But, user will be
able to mark whole JAR or just a subset of included resources, and
choose “Extract from” button. He will be also able to specify desired
location.
4. Updating the JAR file
User will be able to drag&drop additional files to JAR archive or remove
the existing ones. It will be also possible to change Manifest, generate
or remove index or sign a JAR.
5. Find class in JAR
GUI will provide option to search existing JAR files for some specified
class. User will select JARs and specify name of the class he want to
search for. If program finds the specified class, it will notify user
about its location.
6. JAR repositories
The last functionality will be possibility to group JAR files into JAR
repository. User will be able to create one or more virtual repositories
aggregating JAR archives. Such solution will be quiet comfortable for
end users, and will also provides fast way to search JARs for specified
class, because it will be possible to invoke search on logic repository
(all JARs in repository).
Summing up, I think that for some cases console interface (like the one
provided by Sun) is slightly better, especially if you are familiar with
it. But there exist some cases where additional GUI tool can make
difference. The most popular case is when you want to integrate
functionality of several tools like jar, jarsigner, jar preverification
tool etc. The next advantage is possibility to save your preferred
settings to reuse them in future (like information about JAR
repositories). Additionally GUI may be a good start point for users, who
start with Java. In Sun’s JVM you can find several GUI tools, like
jconsole or visualvm. Of course these tools are little different, and it
would be hard to imagine console version of visualvm ;-) But it is
commonly known that GUI tools are quiet attractive for people (more than
console).
Cheers,
Tomek