SMALLTALK-80: the interactive programming environment
SMALLTALK-80: the interactive programming environment
Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Gandalf: software development environments
IEEE Transactions on Software Engineering
The AWK programming language
Rigi-A system for programming-in-the-large
ICSE '88 Proceedings of the 10th international conference on Software engineering
SDE 3 Proceedings of the third ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
The C Information Abstraction System
IEEE Transactions on Software Engineering
Logic programming and databases
Logic programming and databases
The well-founded semantics for general logic programs
Journal of the ACM (JACM)
The design of whole-program analysis tools
Proceedings of the 18th international conference on Software engineering
Prolog: the standard: reference manual
Prolog: the standard: reference manual
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
GENOA—a customizable, front-end-retargetable source code analysis framework
ACM Transactions on Software Engineering and Methodology (TOSEM)
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Extended static checking for Java
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
The C++ Programming Language, Third Edition
The C++ Programming Language, Third Edition
Java Virtual Machine Specification
Java Virtual Machine Specification
The Java Programming Language
Linear time datalog and branching time logic
Logic-based artificial intelligence
Alias annotations for program understanding
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Arranging language features for more robust pattern-based crosscuts
Proceedings of the 2nd international conference on Aspect-oriented software development
Conquering aspects with Caesar
Proceedings of the 2nd international conference on Aspect-oriented software development
Navigating and querying code without getting lost
Proceedings of the 2nd international conference on Aspect-oriented software development
Object-Oriented Multi-Methods in Cecil
ECOOP '92 Proceedings of the European Conference on Object-Oriented Programming
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Multiparadigm Programming with Object-Oriented Languages
ECOOP '02 Proceedings of the Workshops and Posters on Object-Oriented Technology
Querying Source Code Using an Algebraic Query Language
ICSM '94 Proceedings of the International Conference on Software Maintenance
Code migration through transformations: an experience report
CASCON '98 Proceedings of the 1998 conference of the Centre for Advanced Studies on Collaborative research
Statically Checkable Design Level Traits
ASE '98 Proceedings of the 13th IEEE international conference on Automated software engineering
Fast, Flexible Syntactic Pattern Matching and Processing
WPC '96 Proceedings of the 4th International Workshop on Program Comprehension (WPC '96)
YAAB (Yet Another AST Browser): Using OCL to Navigate ASTs
IWPC '03 Proceedings of the 11th IEEE International Workshop on Program Comprehension
Extraction and Use of Class Dependency Information for Java
WCRE '02 Proceedings of the Ninth Working Conference on Reverse Engineering (WCRE'02)
Jam---designing a Java extension with mixins
ACM Transactions on Programming Languages and Systems (TOPLAS)
A comparative study of language support for generic programming
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Declaring and checking non-null types in an object-oriented language
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Flowchart techniques for structured programming
ACM SIGPLAN Notices
Visualizing and querying software structures
CASCON '91 Proceedings of the 1991 conference of the Centre for Advanced Studies on Collaborative research
On exponential-time completeness of the circularity problem for attribute grammars
ACM Transactions on Programming Languages and Systems (TOPLAS)
Cloning-based context-sensitive pointer alias analysis using binary decision diagrams
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
XJ: integration of XML processing into java
Proceedings of the 13th international World Wide Web conference on Alternate track papers & posters
A practical type system and language for reference immutability
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A Comparison of Bug Finding Tools for Java
ISSRE '04 Proceedings of the 15th International Symposium on Software Reliability Engineering
XIRC: A Kernel for Cross-Artifact Information Engineering in Software Development Environments
WCRE '04 Proceedings of the 11th Working Conference on Reverse Engineering
ACM SIGPLAN Notices
SQL DOM: compile time checking of dynamic SQL statements
Proceedings of the 27th international conference on Software engineering
Safe query objects: statically typed objects as remotely executable queries
Proceedings of the 27th international conference on Software engineering
Using structural context to recommend source code examples
Proceedings of the 27th international conference on Software engineering
Tool support for just-in-time architecture reconstruction and evaluation: an experience report
Proceedings of the 27th international conference on Software engineering
Associated types and constraint propagation for mainstream object-oriented generics
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Finding application errors and security flaws using PQL: a program query language
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Relational queries over program traces
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A framework for implementing pluggable type systems
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
ASTLOG: a language for examining abstract syntax trees
DSL'97 Proceedings of the Conference on Domain-Specific Languages on Conference on Domain-Specific Languages (DSL), 1997
The C# Programming Language
Polyglot: an extensible compiler framework for Java
CC'03 Proceedings of the 12th international conference on Compiler construction
The emergent structure of development tasks
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Expressive pointcuts for increased modularity
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Chai: traits for Java-like languages
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
CodeQuest: scalable source code queries with datalog
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
A framework for implementing pluggable type systems
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
A static aspect language for checking design rules
Proceedings of the 6th international conference on Aspect-oriented software development
Automatic extraction of framework-specific models from framework-based application code
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Unanticipated partial behavioral reflection: Adapting applications at runtime
Computer Languages, Systems and Structures
.QL: Object-Oriented Queries Made Easy
Generative and Transformational Techniques in Software Engineering II
Fast extraction of high-quality framework-specific models from application code
Automated Software Engineering
Are We Ready for a Safer Construction Environment?
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
Transactional pointcuts: designation reification and advice of interrelated join points
GPCE '09 Proceedings of the eighth international conference on Generative programming and component engineering
JavaCOP: Declarative pluggable types for java
ACM Transactions on Programming Languages and Systems (TOPLAS)
Graph-based verification of static program constraints
Proceedings of the 2010 ACM Symposium on Applied Computing
Datalog programs over infinite databases, revisited
DBPL'07 Proceedings of the 11th international conference on Database programming languages
Fundamental Nano-Patterns to Characterize and Classify Java Methods
Electronic Notes in Theoretical Computer Science (ENTCS)
The use of overloading in JAVA programs
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
The SOUL tool suite for querying programs in symbiosis with Eclipse
Proceedings of the 9th International Conference on Principles and Practice of Programming in Java
Programming language evolution via source code query languages
Proceedings of the ACM 4th annual workshop on Evaluation and usability of programming languages and tools
Hi-index | 0.00 |
We present an overview of JTL (the Java Tools Language, pronounced "Gee-tel"), a novel language for querying JAVA [8] programs. JTL was designed to serve the development of source code software tools for JAVA, and as a small language which to aid programming language extensions to JAVA. Applications include definition of pointcuts for aspect-oriented programming, fixing type constraints for generic programming, specification of encapsulation policies, definition of micro-patterns, etc. We argue that the JTL expression of each of these is systematic, concise, intuitive and general.JTL relies on a simply-typed relational database for program representation, rather than an abstract syntax tree. The underlying semantics of the language is restricted to queries formulated in First Order Predicate Logic augmented with transitive closure (FOPL).Special effort was taken to ensure terse, yet readable expression of logical conditions. The JTL pattern public abstract class, for example, matches all abstract classes which are publicly accessible, while class (public clone();) matches all classes in which method clone is public. To this end, JTL relies on a DATALOG-like syntax and semantics, enriched with quantifiers and pattern matching which all but entirely eliminate the need for recursive calls.JTL's query analyzer gives special attention to the fragility of the "closed world assumption" in examining JAVA software, and determines whether a query relies on such an assumption.The performance of the JTL interpreter is comparable to that of JQuery after it generated its database cache, and at least an order of magnitude faster when the cache has to be rebuilt.