Tuesday, 26 July 2011

Do you know these features of Java Decompiler ?

Other than the basic “search for a word” and “go to line number”, following are some of the features of the latest Java Decompiler:

1. You can open multiple Jar files in tab. You can open multiple class files in tab. If one class has a reference to another class in the same jar, you can go to that class file by just clicking :

 2. You can view the Type Hierarchy of a class file by selecting : Navigate –>  Open Type Hierarchy ( F4 ) :

 3. You can view the outline of the class ( methods and variables ) by selecting : Navigate –> Quick Outline ( Ctrl + Shift + O ) or you can click on the middle button of your mouse to open the quick outline :

 4. It is possible to save a single class file as the Java source file and also to save all the class files in a jar as a zipped source file :

 5.  Copy and paste a stacktrace from a file into the Decompiler and the stacktrace became active in a clipboard window, provided the class files already opened in the Decompiler.

6.  You can drag and drop and a set of JAR files into the Decompiler.

7. You can download the latest free version @  and the eclipse plug-in @ . Get the Eclipse 4.x version @

Friday, 15 July 2011

Advance Tax/Self Assesment Tax and Interest u/s 234B and 234C

Read more about Tax filing @ .

If you are a salaried person there is tax deduction at source (TDS), which takes care of the tax payments for your salary. At the same time, there will be additional liabilities for income like interest on deposits, bonds and even capital gains which might require you to pay Advance Tax. Advance tax has to be paid in several installments in September, December and March. Self-assessment tax is the difference between the tax paid and the tax payable.You can figure out the self-assessment tax amount when you make the final income tax calculation. There is no specific date for paying this tax but it has to be done before you file your income tax return so that no further amount of tax remains to be paid.

While computing advance tax, income-tax on the current income has to be first determined and the tax on such income has to be determined. As per section 208, advance tax shall be payable in every case where the amount of tax payable by the assessee during that year is in excess of Rs. 5,000. As per section 211, advance tax is payable by companies in four instalments and by non-corporate assessees in three instalments. In cases of corporate assessees, advance tax is payable as under:

Due date of instalment Amount payable
On or before 15/6 Not less than 15%
On or before 15/9 Not less than 45%
On or before 15/12 Not less than 75%
On or before 15/3 The whole amount or 100%

If an assessee fails to pay the amount as above or if the amount paid falls short of the amount payable as under, he would be liable to interest @ 1% p.m. for a period of 3 months with respect to the first three instalments and for one month for the fourth instalment.

In the case of a non-corporate assessees, advance tax is payable in three instalments as given below:

Due date of instalment Amount payable
On or before 15/9 Not less than 30%
On or before 15/12 Not less than 60%
On or before 15/3 The whole amount or 100%

If an assessee either fails to pay the whole of advance tax or where the advance tax paid by him is less than 90% of the assessed tax, he shall be liable to interest @ 1% per month (@ 1.25% up to 7-9-2003) or part of the month from the 1st April of the assessment year to the date of determination of total income u/s. 143(1) and where regular assessment is made, to the date of such regular assessment. No interest is payable if the advance tax paid is 90% or more of the assessed tax.

Find more @

Wednesday, 13 July 2011

Java History and main changes over Java versions

Java SE 7

  1. Codename Dolphin.
  2. Releasing on July 28, 2011.
  3. Better integral literals allowing for underscores as digit separators.
  4. Strings in switch Statements.
  5. Improved Type Inference for Generic Instance Creation.
  6. Improved Compiler Warnings and Errors When Using Non-Reifiable Formal Parameters with Varargs Methods.
  7. Catching Multiple Exception Types and Rethrowing Exceptions with Improved Type Checking .
  8. JVM support for dynamic languages, following the prototyping work currently done on the Multi Language Virtual Machine Compressed 64-bit pointers. Available in Java 6 with -XX:+UseCompressedOops.
  9. Concurrency and collections updates: a lightweight fork/join framework, flexible and reusable synchronization barriers, transfer queues, concurrent linked double-ended queues, and thread-local pseudo-random number generators.
  10. New file I/O library to enhance platform independence and add support for metadata and symbolic links. The new packages are java.nio.file and java.nio.file.attribute.A fully-functional and supported NIO.2 filesystem provider for zip and jar files.
  11. A portable implementation of the standard Elliptic Curve Cryptographic (ECC) algorithms, so that all Java applications can use ECC.
  12. An XRender pipeline for Java 2D, which improves handling of features specific to modern GPUs.
  13. Enhanced library-level support for new network protocols, including SCTP(Stream Control Transmission Protocol) and Sockets Direct Protocol.
  14. Upgrade the components of the XML stack to the most recent stable versions: JAXP 1.4, JAXB 2.2a, and JAX-WS 2.2
  15. Upgrade the supported version of Unicode to 6.0
  16. Locale enhancement: upgrade the java.util.Locale class to support IETF BCP 47 (Tags for Identifying Languages) and UTR 35 (Local Data Markup Language).
  17. Separate user locale and user-interface locale: upgrade the handling of locales to separate formatting locales from user-interface language locales.
  18. Upgrade class-loader architecture: modifications to the ClassLoader API and implementation to avoid deadlocks in non-hierarchical class-loader topologies.
  19. Method to close a URLClassLoader: a method that frees the underlying resources, such as open files, held by a URLClassLoader.
  20. Upgrade the networking code to use the Windows Vista IPv6 stack, when available, in preference to the legacy Windows stack.
  21. Gervill sound synthesizer: drop the old, proprietary, encumbered sound synthesizer in favor of Gervill, a synthesizer created as a proposal for the Audio Synthesis Engine Project.
  22. Enhancements to the existing MBeans to report the recent CPU load of the whole system, the CPU load of the JVM process, and to send JMX notifications when GC events occur.
  23. Introduction to JDBC 4.1 with  the following features:

  • The ability to use a try-with-resources statement to automatically close resources of type Connection, ResultSet, and Statement.
  • RowSet 1.1: The introduction of the RowSetFactory interface and the RowSetProvider class, which enable you to create all types of row sets supported by your JDBC driver.

Find the Java 7 deprecated code @

Oracle has published @ 27-June-2011 , the first release candidate for JDK 7 :

Java SE 6 (December 11, 2006)

  1. Codename Mustang.
  2. As of this version, Sun replaced the name “J2SE” with Java SE and dropped the “.0? from the version number. Internal numbering for developers remains 1.6.0.
  3.  The current revision is Update 26 which was released in June 2011.
  4. Support for older Win9x versions dropped. Unofficially Java 6 Update 7 is the last release of Java shown to work on these versions of Windows. This is believed to be due to the major changes in Update 10.
  5. Scripting Language Support. Generic API for tight integration with scripting languages, and built-in Mozilla JavaScript Rhino integration.
  6. Dramatic performance improvements for the core platform and Swing.
  7. Improved Web Service support through JAX-WS.
  8. JDBC 4.0 support.
  9. Java Compiler API, an API allowing a Java program to select and invoke a Java Compiler programmatically.
  10. Upgrade of JAXB to version 2.0: Including integration of a StAX parser.
  11. Support for pluggable annotations.
  12. Many GUI improvements, such as integration of SwingWorker in the API, table sorting and filtering, and true Swing double-buffering (eliminating the gray-area effect).
  13. JVM improvements include: synchronization and compiler performance optimizations, new algorithms and upgrades to existing garbage collection algorithms, and application start-up performance.
  14. Java Deployment Toolkit, a set of JavaScript functions to ease the deployment of applets and Java Web Start applications.
  15. Java Kernel, a small installer including only the most commonly used JRE classes. Other packages are downloaded when needed.
  16. Java Quick Starter, to improve cold start-up time.
  17. Improved performance of Java2D graphics primitives on Windows, using Direct3D and hardware acceleration.
  18. A new Swing look and feel called Nimbus based on synth.
  19. Next-Generation Java Plug-In: applets now run in a separate process and support many features of Web Start applications.
  20. The -XX:+DoEscapeAnalysis option directs the HotSpot JIT compiler to use escape analysis to determine if local objects can be allocated on the stack instead of the heap.
  21. Includes “tiered” compilation in the Server VM that enables it to start quickly as does the Client VM, while achieving superior peak performance. This feature is enabled by specifying -server and -XX:+TieredCompilation command options.

Find the Java 6 deprecated code @

J2SE 5.0 (September 30, 2004)

  1. Codename Tiger.
  2. J2SE 5.0 entered its end-of-life on April 8, 2008 and is no longer supported by Sun as of November 3, 2009.
  3. Enhanced for loop(for each for loop).
  4. Enumerations: The enum keyword creates a typesafe, ordered list of values (such as Day.MONDAY, Day.TUESDAY, etc.). Previously this could only be achieved by non-typesafe constant integers or manually constructed classes (typesafe enum pattern).
  5. Assertions added in java 1.5
  6. AutoBoxing/Unboxing, automatic conversions between primitive types (such as int) and primitive wrapper classes (such as Integer).
  7. Generics (example: typed Collections, Set(<String>) , provides compile-time (static) type safety for collections).
  8. Varagrs, variable arguments. (example : for printf() function,allows variable number of different arguments).
  9. StringBuilder class in jdk 1.5 (java.lang package).
  10. Annotations, allows language constructs such as classes and methods to be tagged with additional data, which can then be processed by metadata-aware utilities.
  11. Static imports.
  12. Fix the previously broken semantics of the Java Memory Model, which defines how threads interact through memory.
  13. Automatic stub generation for RMI objects.
  14. Swing: New skinnable look and feel, called synth.
  15. The concurrency utilities in package java.util.concurrent.
  16. Scanner class for parsing data from various input streams and buffers.
  17. Java 5 is the last release of Java to officially support the Microsoft Windows 9x line (Windows 95, Windows 98, Windows ME) :

Unofficially, Java SE 6 Update 7( is the last version of Java to be shown working on this family of operating systems.

Find the Java 5 deprecated code @

J2SE 1.4 (February 6, 2002)

  1. Codename Merlin.
  2. This was the first release of the Java platform developed under the Java Community Process as JSR 59.
  3. Assert keyword.
  4. Regular expressions modeled after Perl regular expressions.
  5. Exception chaining allows an exception to encapsulate original lower-level exception.
  6. Internet Protocol version 6 (IPv6) support.
  7. Non-blocking NIO (New Input/Output).
  8. Logging API.
  9. Image I/O API for reading and writing images in formats like JPEG and PNG.
  10. Integrated XML parser and XSLT processor (JAXP).
  11. Integrated security and cryptography extensions (JCE, JSSE, JAAS).
  12. Java Web Start included.
  13. Preferences API (java.util.prefs)

J2SE 1.3 (May 8, 2000)

  1. Codename Kestrel.
  2. HotSpot JVM included.
  3. RMI was modified to support optional compatibility with CORBA.
  4. JavaSound.
  5. Java Naming and Directory Interface (JNDI) included in core libraries (previously available as an extension).
  6. Java Platform Debugger Architecture (JPDA).
  7. Synthetic proxy classes.

J2SE 1.2 (December 8, 1998)

  1. Codename Playground.
  2. This and subsequent releases through J2SE 5.0 were rebranded as Java 2 and the version name “J2SE” (Java 2 Platform, Standard Edition) replaced JDK to distinguish the base platform from J2EE (Java 2 Platform, Enterprise Edition) and J2ME (Java 2 Platform, Micro Edition).
  3. strictfp keyword.
  4. The Swing graphical API was integrated into the core classes.
  5. Sun’s JVM was equipped with a JIT compiler for the first time.
  6. Java Plug-in.
  7. Java IDL, an IDL implementation for CORBA interoperability.
  8. Collections framework.

JDK 1.1 (February 19, 1997)

  1. An extensive retooling of the AWT event model
  2. Inner classes added to the language
  3. JavaBeans
  4. JDBC
  5. RMI
  6. Reflection which supported Introspection only, no modification at runtime was possible.

JDK 1.0 (January 23, 1996)

  1. Codename Oak.
  2. Initial release
  3. The first stable version was the JDK 1.0.2 is called Java 1

Wednesday, 6 July 2011

Income Tax process and e-filing

Below I am listing the step-by-step activities of the Tax Process that a working professional need to do in a given Financial Year. Here FY refers to Financial Year  and  AY refers to Assesment Year.

  1. Each month we will pay the Tax (From APRIL 20xx to MARCH 20xx+1) through our Employer for the FY 20xx – 20xx+1.
  2. In the month April 20xx, we will give the investment details to the employer (in our employer specified portal) for the FY 20xx – 20xx+1.
  3. In the month January 20xx+1, we will give the investment proof details , Rent receipts… to the Employer Finance Department for the FY 20xx – 20xx+1.
  4. In the month MAY/JUNE 20xx+1, employer gives the Form 16 for the FY 20xx – 20xx+1 to us (The proof given by the employer to the employee for the tax paid by the employee).
  5. In the month July 20xx+1 (on or before July 31st of every year), we will fill the ITR forms (earlier it was NayaSaral form) and will file the ITRs (e-filing) for the FY 20xx – 20xx+1 @ the Income Tax url : and after we complete the e-filing, we will get ITR-V (a PDF file)  as a proof. We will send a signed copy of this PDF to Income Tax department.
  6. Later Tax department will send us a confirmation mail to our mailId for the tax paid.

How to do the E-Filing :

  1. Download the ITR form from the URL :
  2. Fill the appropriate ITR form and generate XML from it (please find below for detailed steps).
  3. Go to and register and create a user id/password.
  4. Please note that the name to be given while registering should be exactly similar to the name appearing in your PAN card.
  5. Go to “Submit Return” and select the assessment year.
  6. Now select the appropriate type of Return Form and select whether the form is digitally signed.
  7. Browse to select XML file and click on “Upload” button.
  8. On successful upload acknowledgement details would be displayed. Click on “Print” to generate printout of acknowledgement/ITR-V Form.
  9. ITR V is a pdf file and password protected. The password will be your PAN number in small letters plus date of birth in ddmmyyyy format without spaces.
  10. Incase the return is digitally signed, on generation of “Acknowledgement” the Return Filing process gets completed. You may take a printout of the Acknowledgement for your record.
  11. Incase the return is not digitally signed, on successful uploading of e-Return, the ITR-V Form would be generated which needs to be printed by the tax payers. This is an acknowledgement cum verification form. A duly signed ITR-V form should be mailed to “Income Tax Department – CPC, Post Bag No – 1, Electronic City Post Office, Bengaluru – 560100, Karnataka, ”    BY ORDINARY POST OR SPEED POST ONLY   within 120 days of transmitting the data electronically. ITR-V sent by Registered Post or Courier will not be accepted.

Please keep in mind the below points when you fill the ITR form:

  1. When you fill ITR form, enable the macros in the xls. In Excel 2007, it appears in a tab “Security warning” – enable that option.
  2. Enter the values only in the GREEN colored xl cells.
  3. Use TAB to navigate through the data entry cells on the sheet.
  4. Dates must always be entered as dd/mm/yyyy formats  (ex : 14/03/2010).
  5. Click  ”Next/Previous”  to navigate between the sheets.
  6. After you fill a sheet, click the “Validate” button.
  7. Click on ‘Calculate Tax’ button on the ‘Income Details’ sheet.
  8. Save your Excel File once your work is completed.
  9. After above steps completed for all sheets, click on Generate XML from any of the sheets.
  10. The XML file is now saved in the same folder in which the Excel utility is saved, and can be uploaded.
Dos and Dont’s for printing and submitting of ITR-Vs to ITD-CPC Bangalore

  1. Please use Ink Jet /Laser printer to print the ITR-V Form.
  2. The ITR-V Form should be printed only in black ink.
  3. Ensure that print out is clear and not light print/faded copy.
  4. Please do not print any water marks on ITR-V. The only permissible watermark is that of “Income tax Department” which is printed automatically on each ITR-V.
  5. The document that is mailed to CPC should be signed in original in BLUE INK.
  6. Photocopy of signatures will not be accepted.
  7. The signatures or any handwritten text should not be written on Bar code.
  8. Bar code and numbers below barcode should be clearly visible.
  9. Only A4 size white paper should be used.
  10. Avoid typing anything at the back of the paper.
  11. Perforated paper or any other size paper should be avoided.
  12. Do not use stapler on ITR V acknowledgement.
  13. In case you are submitting original and revised returns, do not print them back to back. Use two separate papers for printing ITR-Vs separately.
  14. More than one ITR-V can be sent in the same envelope.
  15. Please do not submit any annexures, covering letter, pre stamped envelopes etc. along with ITR-V.
  16. ITR-Vs that do not conform to the above specifications may get rejected or acknowledgement of receipt may get delayed.

No Income Tax Return needed for individuals having income below 5 Lakh from FY 2010-11

Individuals having total income up to Rs.5,00,000 for FY 2010-11, after allowable deductions, consisting of salary from a single employer and interest income from deposits in a saving bank account up to Rs.10,000 are not required to file their income tax return. Such individuals must report their Permanent Account Number (PAN) and the entire income from bank interest to their employer, pay the entire tax by way of deduction of tax at source, and obtain a certificate of tax deduction in Form No.16.

Persons receiving salary from more than one employer, having income from sources other than salary and interest income from a savings bank account, or having refund claims shall not be covered under the scheme.

For more details, visit:

To get an idea about which ITR form to use :