harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Yanxin Xue <yanxin...@gmail.com>
Subject [GSoC] My proposal about harmony-tools-1-implement -JAR
Date Fri, 03 Apr 2009 08:19:44 GMT
 Hi, everyone

This is my proposal about harmony-tools-1-implement -JAR. Could I ask for
some advices about this project, thx a lot
*
It is my proposal link:
http://socghop.appspot.com/student_proposal/show/google/gsoc2009/yanxin/t123874499622
* Abstract:

Harmony’s aim is certifies implementation of the Java Platform Standard
Edition. But it is missing several of the useful tools which in JDK, JAR is
one of it. The JAVA platform widely used over the world, but it makes
programmer programming easier and user use harder. JAR tools have solved
this problem. The JAR tools can aggregates lots of files into one file. So
developers can easily use .jar files to distribute Java classes and
associated metadata. User also can use the tools like JAVAW to execute it.
This project’s aim is to implement a tool like JAR in Harmony platform.


Detailed Description: Introduction

Java Platform, Standard Edition or Java SE is a widely used platform for
programming in the Java language. Apache Harmony is the Java SE project of
the Apache Software Foundation. The aim of the project is to produce a large
and healthy community of those interested in runtime platforms tasked with
creation blew: 1).A compatible, independent implementation of the Java SE 5
JDK under the Apache License v2. 2).A community-developed modular runtime
(VM and class library) architecture. But Harmony is missing several of the
tools that ship with the JDK, including jar, jconsole and javaws. This
project’s aim is to implement a tool like JAR in Harmony platform.


JAR stands for Java Archive. It's a file format based on the popular ZIP
file format and is used for aggregating many files into one. Although JAR
can be used as a general archiving tool, the primary motivation for its
development was so that Java applets and their requisite components (.class
files, images and sounds) can be downloaded to a browser in a single HTTP
transaction, rather than opening a new connection for each piece. In this
way it can let user easily used. This greatly improves the speed with which
an applet can be loaded onto a web page and begin functioning. The JAR
format also supports compression, which reduces the size of the file and
improves download time still further. Additionally, individual entries in a
JAR file may be digitally signed by the applet author to authenticate their
origin. JAR consists of a zip archive, as defined by PKWARE, containing a
manifest file and potentially signature files.


Project Goal

The Harmony development kit will compatible the JDK environment, so the JAR
tools in HDK also will fully compatible that tools in JDK. So we will
consult the JAR file specification to implement our tools.


Must have functions 1). Creating a JAR File

The basic format of the command for creating a JAR file is: jar cf jar-file
input-file(s) The options and arguments used in this command are: The c
option indicates that you want to create a JAR file. The f option indicates
that you want the output to go to a file rather than to stdout. jar-file is
the name that you want the resulting JAR file to have. You can use any
filename for a JAR file. By convention, JAR filenames are given a .jar
extension, though this is not required. The input-file(s) argument is a
space-separated list of one or more files that you want to include in your
JAR file. The input-file(s) argument can contain the wildcard * symbol. If
any of the "input-files" are directories, the contents of those directories
are added to the JAR archive recursively. The c and f options can appear in
either order, but there must not be any space between them.


This command will generate a compressed JAR file and place it in the current
directory. The command will also generate a default manifest file for the
JAR archive.


You can add any of these additional options to the cf options of the basic
command: v Produces verbose output on stdout while the JAR file is being
built. The verbose output tells you the name of each file as it's added to
the JAR file. 0 (zero) Indicates that you don't want the JAR file to be
compressed. M Indicates that the default manifest file should not be
produced. m Used to include manifest information from an existing manifest
file. –C To change directories during execution of the command.
2). Viewing the Contents of a JAR File

The basic format of the command for viewing the contents of a JAR file is:
jar tf jar-file Let's look at the options and argument used in this command:
The t option indicates that you want to view the table of contents of the
JAR file. The f option indicates that the JAR file whose contents are to be
viewed is specified on the command line. The jar-file argument is the path
and name of the JAR file whose contents you want to view. The t and f
options can appear in either order, but there must not be any space between
them. This command will display the JAR file's table of contents to stdout.
You can optionally add the verbose option, v, to produce additional
information about file sizes and last-modified dates in the output.


3). Extracting the Contents of a JAR File

The basic command to use for extracting the contents of a JAR file is: jar
xf jar-file [archived-file(s)] Let's look at the options and arguments in
this command: The x option indicates that you want to extract files from the
JAR archive. The f options indicates that the JAR file from which files are
to be extracted is specified on the command line, rather than through stdin.
The jar-file argument is the filename (or path and filename) of the JAR file
from which to extract files. archived-file(s) is an optional argument
consisting of a space-separated list of the files to be extracted from the
archive. If this argument is not present, the Jar tool will extract all the
files in the archive. As usual, the order in which the x and f options
appear in the command doesn't matter, but there must not be a space between
them. When extracting files, the Jar tool makes copies of the desired files
and writes them to the current directory, reproducing the directory
structure that the files have in the archive. The original JAR file remains
unchanged.
4). Updating a JAR File

The Jar tool provides a u option which you can use to update the contents of
an existing JAR file by modifying its manifest or by adding files. The basic
command for adding files has this format: jar uf jar-file input-file(s) In
this command: The u option indicates that you want to update an existing JAR
file. The f option indicates that the JAR file to update is specified on the
command line. jar-file is the existing JAR file that's to be updated.
input-file(s) is a space-deliminated list of one or more files that you want
to add to the Jar file. Any files already in the archive having the same
pathname as a file being added will be overwritten. When creating a new JAR
file, you can optionally use the -C option to indicate a change of
directory.


Should have functions 1.) Signing JAR Files

You use the JAR Signing and Verification Tool to sign JAR files. You invoke
the JAR Signing and Verification Tool by using the jarsigner command, so
we'll refer to it as "Jarsigner" for short.The basic form of the command for
signing a JAR file is jarsigner jar-file alias In this command: jar-file is
the pathname of the JAR file that's to be signed. alias is the alias
identifying the private key that's to be used to sign the JAR file, and the
key's associated certificate. The Jarsigner tool will prompt you for the
passwords for the keystore and alias. This basic form of the command assumes
that the keystore to be used is in a file named .keystore in your home
directory. It will create signature and signature block files with names
x.SF and x.DSA respectively, where x is the first eight letters of the
alias, all converted to upper case. This basic command will overwrite the
original JAR file with the signed JAR file.

Jarsigner Command Options: -keystore url Specifies a keystore to be used if
you don't want to use the .keystore default database. -storepass password
Allows you to enter the keystore's password on the command line rather than
be prompted for it. -keypass password     Allows you to enter your alias's
password on the command line rather than be prompted for it. -sigfile
file    Specifies the base name for the .SF and .DSA files if you don't want
the base name to be taken from your alias. file must be composed only of
upper case letters (A-Z), numerals (0-9), hyphen (-), and underscore (_).
-signedjar file    Specifies the name of the signed JAR file to be generated
if you don't want the original unsigned file to be overwritten with the
signed file.
2). Verifying Signed JAR Files

Typically, verification of signed JAR files will be the responsibility of
your JavaTM Runtime Environment. Your browser will verify signed applets
that it downloads. Signed applications invoked with the -jar option of the
interpreter will be verified by the runtime environment. However, you can
verify signed JAR files yourself by using the Jarsigner tool. You might want
to do this, for example, to test a signed JAR file that you've prepared. The
basic command to use for verifying a signed JAR file is: jarsigner -verify
jar-file This command will verify the JAR file's signature and ensure that
the files in the archive haven't changed since it was signed. You'll see the
following message if the verification is successful: jar verified. If you
try to verify an unsigned JAR file, the following message results: jar is
unsigned. (signatures missing or not parsable) If the verification fails, an
appropriate message is displayed. For example, if the contents of a JAR file
have changed since the JAR file was signed, a message similar to the
following will result if you try to verify the file:
jarsigner: java.lang.SecurityException: invalid SHA1
signature file digest for test/classes/Manifest.class
Wanna have functions 1.) java.util.jar implement

Provides classes for reading and writing the JAR (Java ARchive) file format,
which is based on the standard ZIP file format with an optional manifest
file. Detailed at
http://java.sun.com/javase/6/docs/api/java/util/jar/package-summary.html
Project Planning

April 20 ~ May 22: Get accepted student proposals announcement on the Google
Summer of Code 2009 site. Get touch with mentor and get the advice for
background knowledge, and be familiar with coding environment. Finish my
graduation papers.
May 23 ~ Jun 1: Finish creating a JAR File part
Jun 2 ~ Jun 11: Finish viewing the Contents of a JAR File part
Jun 12 ~ Jun 21: Finish extracting the Contents of a JAR File part
Jun 22 ~ Jul 1: Finish updating a JAR File part
*Jul 2 ~ Jul 12: (Milestone) Debug, finish mid-term report*
Jul 13 ~ Jul 19: Review the mid-term project, study the technique, get
project evaluation
Jul 20 ~ Jul 26: Finish signing JAR Files part
Jul 27 ~ August 2: Finish verifying Signed JAR Files part
August 3 ~ August 14: Finish java.util.jar implement part
*August 15 ~ August 22: (Milestone) Debug, finish final report*
August 23 ~ August 26: Get Final Results for the Program Announced


Additional Information:

Hi, I'm Yanxin from Fudan University, Shanghai, China. My major is Computer
Science. I got touch with computer since my childhood, from that time I fall
into the computer's world. In the high school I meet the teacher who tough
us programing skills systematically. After learning the algorithm and data
structure, I win the Information Olympic competition at top 0.05%, thus got
the admit of Fudan University.


At university, I join lots of students' union, and also study the newest
technique which don't been tough in school. Last summer I got a chance to be
a intern at IBM China. I'm very familiar with JAVA language, and develop
some of the projects on that environment. Like use Struts to develop library
management system, or use Jpcap to develop ReliableUDP implement with slide
window. That was why I choose Harmony project.


I usually use some of open source softwares, but have do nothing to them. I
wish this Google Summer of Code could give me a chance to be a contributors.
Reference

1. Harmony introduction: http://en.wikipedia.org/wiki/Apache_Harmony
2. Harmony details: http://harmony.apache.org/
3. JAR introduction:
http://en.wikipedia.org/wiki/JAR_(file_format)<http://en.wikipedia.org/wiki/JAR_%28file_format%29>
4. JAR specification:
http://java.sun.com/javase/6/docs/technotes/guides/jar/index.html

Best regards

Yanxin Xue
School of Computer Science
Fudan University
Shanghai, China
Sent from: Shanghai Shanghai China.

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message