Development of Java tools using SWT and WALA - PowerPoint PPT Presentation

1 / 13
About This Presentation
Title:

Development of Java tools using SWT and WALA

Description:

using SWT and WALA Builder example SWT, - The Standard Widget Toolkit WALA, - for static analysis of Java bytecode Example: Profile generator Conclusion – PowerPoint PPT presentation

Number of Views:76
Avg rating:3.0/5.0
Slides: 14
Provided by: infi157
Category:

less

Transcript and Presenter's Notes

Title: Development of Java tools using SWT and WALA


1
Development of Java tools using SWT and WALA
  • Builder example
  • SWT, - The Standard Widget Toolkit
  • WALA, - for static analysis of Java bytecode
  • Example Profile generator
  • Conclusion
  • Infinit Højniveausprog, 10 February 2010

Hans Søndergaard
2
Model JemBuilder
  • aJile Systems
  • Builder for the aJile Java processor

3
GUI programming using SWT
  • SWT The Standard Widget Toolkit
  • designed to provide efficient, portable access to
    the user-interface facilities of the operating
    systems on which it is implemented
  • part of Eclipse
  • many code snippets
  • see http//www.eclipse.org/swt/

4
SWT versus Swing
  • No clear difference as to performance
  • Swing
  • has more memory consumption than SWT
  • has all its components implemented by itself
  • has much more classes to be loaded in runtime.

5
Analysis of Java bytecode
  • WALA provides static analysis capabilities for
    Java bytecode
  • WALA features include
  • Java type system and class hierarchy analysis
  • Interprocedural dataflow analysis
  • Pointer analysis and call graph construction
  • General framework for iterative dataflow
  • General analysis utilities and data structures
  • A dynamic load-time instrumentation library for
    Java
  • open source license
  • http//wala.sourceforge.net/wiki/index.php/Main_
    Page

6
Example PositiveListChecker
  • Scans a list of classes to be checked
  • A Profile must be available
  • a positive list of classes with methods
  • The result is written in a report file.
  • Generated report file
  • Not on positive list
  • (type, class, method)
  • (7, java/lang/Object, null)
  • (10, hello/NotPositiveClass, staticMethod1)
  • (7, hello/NotPositiveClass, null)

7
Profile generator
8
Profile generator Add to Available classes
9
Code snippet Available classes Add
  • Button addButton new Button (composite,
    SWT.PUSH)
  • addButton.setText (" Add ")
  • addButton.addSelectionListener (new
    SelectionAdapter ()
  • public void widgetSelected (SelectionEvent e)
  • FileDialog fileDialog new
    FileDialog(fileList.getShell(), SWT.OPEN)
  • String filterNames new String "Class
    Files,"Jar Files,"All Files()"
  • String filterExtensions new String
    ".class", ".jar", ""
  • ...
  • String fileName fileDialog.open()
  • ... // see next slide
  • )

10
Code snippet Available classes Add
  • String args fileName // class or jar file
  • try
  • pjchecker.ClassList list new ClassList
    (args) // uses WALA lib
  • HashSetltClassInfogt classSet
    list.getClassList()
  • IteratorltClassInfogt itr classSet.iterator()
  • for ( itr.hasNext() )
  • ClassInfo info itr.next()
  • if (info.methodName null) // a class
  • availableClassList.addClass(info.className)
  • else // a method
  • availableClassList.addMethod(info.className,
    info.methodName)
  • createTree (availableListTree,
    availableClassList)
  • catch(...) ...

11
Code snippet Using WALA classes
  • com.ibm.wala.shrikeBT.shrikeCT.OfflineInstrumenter
  • OfflineInstrumenter oi new OfflineInstrumenter
    () oi.parseStandardArgs(args)
  • com.ibm.wala.shrikeBT.shrikeCT.ClassInstrumenter
  • ClassInstrumenter ci
  • oi.beginTraversal()
  • while ((ci oi.nextClass()) ! null)
  • doClass( ci.getReader() )

12
Code snippet Using WALA classes
  • com.ibm.wala.shrikeCT.ClassReader
  • String className cr.getName()
  • ClassInfo c new ClassInfo (ClassConstants.CONST
    ANT_Class, className, null)
  • classSet.add(c)
  • for (int i 1 i lt cr.getMethodCount() i)
  • int accessFlag cr.getMethodAccessFlags(i)
  • if ((accessFlag 0x0002) ! 0x0002) //
    private methods not included in list
  • if (! cr.getMethodName(i).equals("ltinitgt")
  • !cr.getMethodName(i).equals("ltclinitgt"))
  • c new ClassInfo ( ClassConstants.CONST
    ANT_MethodRef,
  • className,
    cr.getMethodName(i))
  • classSet.add(c)

13
Conclusion
  • SWT is an alternative to Swing
  • part of Eclipse
  • less classes and less memory consumption
  • many code snippets
  • WALA
  • harder to install and get down to use
  • but many features for static analysis of Java
    bytecode
Write a Comment
User Comments (0)
About PowerShow.com