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.
