Webarchitekturen Mit Apache Wicket

Total Page:16

File Type:pdf, Size:1020Kb

Webarchitekturen Mit Apache Wicket Fachthema Geschäftstüchtig cket eingehen, werden im Folgenden die Ziele des Webframe- works und seine grundsätzliche Funktionsweise dargestellt. Webarchitekturen Wicket-Ziele Nachstehende Ziele liegen der Entwicklung des Webframe- mit Apache Wicket works zugrunde [Wicket]: Easy: Das Framework soll einfach, klar und konsistent sein. Der Entwickler muss nach dem Verständnis der Konzepte in Alexander Elsholz, Elena Stoll der Lage sein, die Aktionen des Webframeworks nachvoll- ziehen zu können. Dank dieser Transparenz ist es vergleichs- Apache Wicket wird zum Mainstream – und immer mehr Firmen sprin- weise einfach, das Framework um eigene Abstraktionen gen auf den Zug auf. Die Gründe hierfür sind offensichtlich: Statusbe- zu ergänzen. So können beispielsweise unterschiedlichste haftete, komponentenorientierte und ereignisgesteuerte Webprogram- JavaScript- oder CSS-Frameworks sehr einfach integriert mierung ist mit erprobten UI-Mustern in Java möglich und setzt kein werden. Auch Wickets Lifecycle ist gut anpassbar. Dies wird Expertenwissen in HTML, CSS oder JavaScript voraus. Der Artikel zeigt zum Beispiel durch das integrierte Testframework deutlich, aus der Praxis, wie testgetriebene Entwicklung von modernen Web- welches den Standard-Lifecycle ersetzt. Demnach ist die oberflächen mit Wicket möglich ist. Dabei gehen wir auf die Wicket- Webapplikation gut in die eigene IT-Architektur integrierbar. Kernprinzipien ein und stellen Chancen und Herausforderungen dar, die Reusable: Das Framework soll die Wiederverwendung un- sich bei der Entwicklung mit dem Webframework – insbesondere im terstützen. Dabei sollen die Komponenten als Standard- Umfeld von Geschäftsanwendungen – ergeben. JAR-Dateien verwendet werden können. Die Komponen- tisierung von fachlichen Frontend-Komponenten ist bei- spielsweise auf Basis von Maven oder OSGi [WicketOsgi] Einleitung möglich. Auch eine Anbindung an JSR-286 Portal oder den Widget-Container Shindig ist verfügbar. Die Integration Java-Webframeworks gibt es mittlerweile viele. Dabei etab- folgt dabei dem Ziel der Einfachheit. Die wiederverwend- E liert sich Apache Wicket zunehmend als Alternative zu den baren Komponenten werden über Komposition oder Verer- Platzhirschen wie JSP, JSF, Struts oder Spring MVC. Die Vorteile bung in Java genutzt. liegen auf der Hand: Mit Wicket lassen sich in Java ansprechende, Non-intrusive: Das Ziel hier ist, Layout und Logik nicht mit- leistungsfähige Benutzungsoberflächen umsetzen, die sich gut in einander zu vermischen. Das Layout soll so wenig wie mög- die Unternehmensarchitektur integrieren. Ereignisbehandlung, lich spezifische Tags enthalten. So ist es möglich, das Layout testgetriebene Entwicklung, Komponenten orientierung und durch Webdesigner erstellen zu lassen oder durch Tools bzw. Kapselung von technischen sowie fachlichen Aspekten – all dies Layoutmanager zu generieren. Die Logik soll im Java-Code kann der Entwickler mit Java-Bordmitteln umsetzen. gekapselt sein. So ist die Webanwendung besser zu warten Das schlanke Webframework Wicket basiert auf einem ein- und es können die gängigen Softwareentwicklungsmetho- fachen LifeCycle-Management und der Manipulation von den verwendet werden: Test Driven Development, Refacto- HTML im Java-Code. Der Entwickler programmiert seine ring und Debugging. Oberfläche ähnlich wie bei einer Rich-Client-Technologie Safe: Wicket unterstützt das Entwickeln von sicheren Web- (Swing, VB, Delphi). Dabei werden UI-Controls zu einer anwendungen. Dazu gehört neben der Typsicherheit in der Oberfläche orchestriert und EventHandler für deren Interak- Implementierung (Java) auch die Beschränkung des direkten tion definiert. Zugriffes auf die Wicket-Seiten. So können nur extra gekenn- Auf der Basis einer umfangreichen Sammlung an Controls zeichnete Seiten (sogenannte BookmarkablePages) direkt und Frameworks im Apache-Wicket-Umfang sowie der vielen über URL angesprochen werden. Auch beim Aspekt Security verfügbaren Erweiterungen (Wicket-Stuff-Projekte, bei Google- steht wieder das Ziel der Einfachheit im Fokus. Eine sehr ein- Code gehostete Erweiterungen usw.) lassen sich so ohne große fache Schnittstelle für die Autorisierung ermöglicht die In- Kenntnisse in CSS und JavaScript moderne, Ajax-basierte Web tegration in Standard-Security-Frameworks wie JAAS oder 2.0-Anwendungen entwickeln. Dabei behält der Entwickler Acegi bzw. die Adaption in individuelle Autorisierungslö- volle Kontrolle über seinen erstellten Code. Es kann auf Quell- sungen. Auch hier existiert eine Reihe von verfügbaren Im- code-Ebene debugged, getestet und refaktorisiert werden. Auf- plementierungen, die direkt nutzbar sind bzw. als Basis für bauend auf die vielen fertigen Controls und APIs lassen sich individuelle Lösungen dienen. einfach individuelle Erweiterungen erstellen, um technische Efficient/Scalable: Skalierbarkeit und Performance sollen bei Aspekte vom Fachentwickler zu kapseln. Dafür werden keine allen Designentscheidungen berücksichtigt, aber nicht auf Taglibs oder ähnliche Konzepte verwendet. Die Erweiterungen Kosten der anderen Ziele überproportional gewichtet wer- werden viel mehr im bekannten Java-Umfeld implementiert. den. Interessant beim Aspekt Performance ist die mögliche Auch die Entwicklung von Widgets mit klar definierter Nutzung von Standard-Entwicklungstools. Es ist ohne Wei- Java-Schnittstelle wird vom Framework gut unterstützt. Dies teres möglich, aussagekräftige Lasttests zu implementieren ermöglicht eine komponentenorientierte Entwicklung der Prä- bzw. Profiler für die Analyse von Performance- oder Spei- sentationsschicht. UI-Blackbox-Komponenten werden erstellt, cherproblemen zu nutzen. Allgemein können Wicket-Appli- beschrieben und können von anderen Entwicklern in die eige- kationen sehr performant und mit wenig Speicherverbrauch ne Oberfläche integriert werden. implementiert werden. Komponentenbasierte Frameworks sind aufgrund des am Server vorgehaltenen Komponenten- modells speicherintensiver als klassische actionbasierte Al- Wicket – behind the scenes ternativen. Im Vergleich zu JSF schneidet Wicket in Bench- marks deutlich besser ab [WicketPerformance]. Bevor wir auf die Vorteile der Programmierung von modernen, Complete: ”The Wicket team is committed to deliver a feature Web 2.0-basierten Geschäftsanwendungen auf Basis von Wi- complete, ready-to-use framework for developing Java web www.javaspektrum.de 33 Fachthema applications.“ Ein gutes Beispiel hierfür ist jtrac [JTrac], eine Wicket – Vorteile für Geschäftsanwendungen Java-Version des bekannten Projektmanagementwerkzeu- ges Trac [Trac]. jtrac wurde von JSP auf Wicket umgestellt. Wicket eignet sich sehr gut für die Entwicklung von Web Von den zwölf verschiedenen Frameworks, angefangen mit 2.0-basierten Geschäftsanwendungen. Neben der intuitiven, Ajax über Taglibs, Security bis hin zur Page-Inheritance, ist einfach zu bedienenden Oberfläche hat eine Geschäftsanwen- nach der Umstellung nur Wicket übrig geblieben. Dem Fach- dung weitere zentrale Anforderungen: entwickler stellt sich Wicket als homogenes „ready-to-use“- komponentenorientierte Entwicklung, um parallele Ent- Framework dar. wicklung und Wartbarkeit zu unterstützen, gute Testbarkeit der entwickelten Komponenten, um eine Wicket-Programmierung hohe Testabdeckung durch automatisierte Unit-Tests zu er- Wie wird Wicket den hoch gesteckten Zielen gerecht? Wicket möglichen, wurde nach dem Grundsatz „just java, just html and meaning- Erstellung eigener Abstraktionen, um Wiederverwendung ful abstractions“ entwickelt. Die klare Trennung zwischen Lay- von technischem und fachlichem Code zu erreichen sowie out und Logik, ergänzt um einfach anzuwendende transpa- eine einheitliche Darstellung und Funktionsweise der Ge- rente Abstraktionen, ermöglicht es dem Fachentwickler, sich samtanwendung zu forcieren, auf seine Kernaufgabe zu konzentrieren. Er kann die optima- Unterstützung der projektindividuellen Muster zur Erstel- le Umsetzung der Kundenanforderungen gewährleisten. Pro- lung von Frontends, der Integration anderer Frontends und jektindividuelle Querschnittsaufgaben kann der Architekt bzw. deren Integration in die Gesamtarchitektur. Framework-Entwickler gut in Java kapseln. Auf diese Ansprüche hat Apache Wicket die passenden Ant- Doch wie läuft dabei eine Wicket-Anfrage ab? Ruft der Nut- worten, die wir nachfolgend darstellen. zer eine von Wicket verwaltete URL auf, wird der Request vom WicketServletFilter behandelt. Zunächst löst Wicket die URL Komponentenorientierte Entwicklung des Frontends auf und bestimmt die gesuchte Ressource. Wicket extrahiert die Wicket unterstützt die komponentenorientierte Entwicklung Request-Parameter und gibt diese nach erfolgreicher Typkon- von Webfrontends. Fachlich zusammenhängende Controls vertierung sowie Validierung an das zugehörige Modell. An- werden zu einer UI-Komponente zusammengefasst. Dabei schließend werden die EventListener der Controls aufgerufen. können alle Ressourcen in Form eines Jar-Artefaktes gebün- Die EventHandler werden üblicherweise durch anonyme inne- delt werden. Neben dem Controller, der HTML und den Pro- re Klassen (analog zu Swing oder Eclipse-RCP) definiert. Die perties-Dateien für die Internationalisierung wird eine fach- EventHandler führen die notwendige Geschäftslogik aus und liche Schnittstelle definiert, die die von anderen Komponen- entscheiden, welche Seite bzw. welches Seitenfragment (Ajax) ten nutzbaren Funktionalitäten beschreibt. Diese fachlich ab- zum Client übertragen werden soll. Das zugehörige WebPage- geschlossenen Komponenten (Widgets) werden
Recommended publications
  • Hippo Consolidates Its Leadership Status in the Open Source Software Community Submitted By: Prompt Communications Ltd Wednesday, 25 March 2009
    Hippo consolidates its leadership status in the open source software community Submitted by: Prompt Communications Ltd Wednesday, 25 March 2009 – Global software developer comes of age with more than 150 enterprise organisations using its open source CMS & portal software, ten Hippo developers accepted as ‘committers' to Apache projects; and three 'members' of The Apache Software Foundation – San Francisco, CA and Amsterdam, The Netherlands –25 March, 2009 – Hippo (http://www.onehippo.com), a leading vendor of open source Enterprise Content Management and Portal technology, today further demonstrated its leadership in the open source community with the announcement that the tenth member of its Technology Expertise Team has joined with the prestigious status of ‘committer’ to projects of The Apache Software Foundation. Out of its team of over 50 employees, nine others have attained this status, of which three have since received recognition for their technical excellence and contribution by achieving 'member' level. Developers are accepted as committers by the ASF based on the quality and quantity of their contributions to Apache open source development projects. Led by Hippo’s CTO, Arje Cahn, the Hippo Technology Expertise Team includes ASF members and committers to a broad range of Apache projects including Cocoon, Jetspeed, Portals, Wicket, and Jackrabbit. The number of Hippo developers accepted as Apache committers is indicative both of the high levels of technical expertise within the company, and of its commitment to contributing to open source development projects and enriching the world’s store of open source software. The ASF process is meritocratic: to attain committer status, developers have to be voted on by other committers.
    [Show full text]
  • Develop a Simple Web Application with Apache Wicket and Apache
    Develop a simple Web application with Apache Wicket and Apache Geronimo Combine Wicket, Geronimo, and Apache Derby to form an open source Java Web development platform Skill Level: Intermediate Robi Sen ([email protected]) Vice President Department 13 LLC 10 Jul 2007 Apache Wicket is an innovative Java™ Web application framework that was introduced a couple of years ago. It helps simplify Web application development by clearly separating the roles of developers and designers. It lets you remove logical code from the view layer, eliminating the need for JavaServer Pages (JSP), providing a simple plain old Java object (POJO)-centric mode of development, and removing much of the need for XML and other configuration file formats. In this tutorial, learn how to set up your system to develop a simple Web application with Wicket, using Apache Geronimo as your application server and Apache Derby as the embedded database. Section 1. Before you start This tutorial is designed for developers who have found Java frameworks, such as Struts, lacking in needed functionality. If you're interested in developing Web applications in a more object-oriented manner, where the view is clearly separated from logic and there's minimal configuration and mapping, then Wicket is for you! This tutorial walks you through the basics of how Wicket works, while using Apache Geronimo to set up a Java Platform, Enterprise Edition (Java EE) server, Web server, and embedded database in just minutes. Combining Wicket with Geronimo lets you develop data-driven, scalable Web applications using software that's all open source. Develop a simple Web application with Apache Wicket and Apache Geronimo © Copyright IBM Corporation 1994, 2008.
    [Show full text]
  • Modul Web Programming 2
    Modul Web Programming 2 Oleh : Agung Sasongko, M.Kom Program Studi Sistem Informasi Fakultas Teknologi Informasi Agung Sasongko, M.Kom | Sistem Informasi Universitas Bina Sarana Informatika 2018 Daftar Isi Pertemuan 1 ............................................................................................................................................... 4 1.1. Framework Web ......................................................................................................................... 4 1.2. Mengapa Laravel ........................................................................................................................ 5 1.3. Paket Aplikasi Pengembangan PHP ........................................................................................... 5 3.2. Mendaftarkan Direktori PHP ...................................................................................................... 8 3.3. Pemasangan Composer ............................................................................................................ 10 3.4. Pemasangan Laravel ................................................................................................................. 13 3.5. IDE Pengembangan Aplikasi Web ............................................................................................ 14 3.6. Aplikasi Presensi ....................................................................................................................... 17 3.7. Rancangan Database Presensi.................................................................................................
    [Show full text]
  • Summarizing Software API Usage Examples Using Clustering Techniques
    Summarizing Software API Usage Examples using Clustering Techniques Nikolaos Katirtzis1;2, Themistoklis Diamantopoulos3, and Charles Sutton2 1 Hotels.com, London, United Kingdom 2 School of Informatics, University of Edinburgh, Edinburgh, United Kingdom 3 Electrical and Computer Engineering Dept., Aristotle University of Thessaloniki, Thessaloniki, Greece [email protected], [email protected], [email protected] Abstract. As developers often use third-party libraries to facilitate soft- ware development, the lack of proper API documentation for these li- braries undermines their reuse potential. And although several approach- es extract usage examples for libraries, they are usually tied to specific language implementations, while their produced examples are often re- dundant and are not presented as concise and readable snippets. In this work, we propose a novel approach that extracts API call sequences from client source code and clusters them to produce a diverse set of source code snippets that effectively covers the target API. We further construct a summarization algorithm to present concise and readable snippets to the users. Upon evaluating our system on software libraries, we indi- cate that it achieves high coverage in API methods, while the produced snippets are of high quality and closely match handwritten examples. Keywords: API Usage Mining, Documentation, Source Code Reuse, Code Summarization, Mining Software Repositories 1 Introduction Third-party libraries and frameworks are an integral part of current software systems. Access to the functionality of a library is typically offered by its API, which may consist of numerous classes and methods. However, as noted by mul- tiple studies [24, 30], APIs often lack proper examples and documentation and, in general, sufficient explanation on how to be used.
    [Show full text]
  • Evaluating Presentation Layer Development Frameworks for EJB Applications in J2EE Architecture
    International Conference on Computer Science and Information Technology (ICCSIT'2011) Pattaya Dec. 2011 Evaluating Presentation Layer Development Frameworks for EJB Applications in J2EE Architecture Ohm Samkoses, Dipl. -Inform. Matthias Vianden, Prof. Dr. rer. nat. Horst Lichter gathering and analysis, multiple rounds of frameworks Abstract—For medium to large organizations, information selection with different criteria, prototype implementations, systems play an important role for information storage and retrieval. and results evaluation. The chosen frameworks for prototype They are used to support business processes such as decision-making. development should fulfill most of the requirement and the In information systems, huge amountof data needs to be manipulated prototypes implementation should reflect the solution for each and visualized. One way to handle this complexity is to use Enterprise JavaBeans (EJB) [1] in a J2EE architecture. Since EJB has requirement clearly, and must be able to work with the not been designed to work in the Presentation Layer, suitable existing system's environment: the back-end is managed by Presentation Layer Development frameworks are introduced to EJB 3.0, and IBM Websphere Application Server 7.0. enhanced thepresentation layer of the information systems. The MeDIC (Metric Definition Integration Calculation) system and XAM II. TASKS / STEPS (eXam Assignment and Management) system [2] are typical representatives of such information system. A. First frameworks selection Nowadays, many frameworks, such as Java Server Faces (JSF), First step was to narrow-down the scope of the focused Wicket, and Tapestry, exist to cover the Presentation Layer. They framework based mainly on framework popularity. Other provide a variety of features and architecture enhancements.
    [Show full text]
  • An Analysis of CSRF Defenses in Web Frameworks
    Where We Stand (or Fall): An Analysis of CSRF Defenses in Web Frameworks Xhelal Likaj Soheil Khodayari Giancarlo Pellegrino Saarland University CISPA Helmholtz Center for CISPA Helmholtz Center for Saarbruecken, Germany Information Security Information Security [email protected] Saarbruecken, Germany Saarbruecken, Germany [email protected] [email protected] Abstract Keywords Cross-Site Request Forgery (CSRF) is among the oldest web vul- CSRF, Defenses, Web Frameworks nerabilities that, despite its popularity and severity, it is still an ACM Reference Format: understudied security problem. In this paper, we undertake one Xhelal Likaj, Soheil Khodayari, and Giancarlo Pellegrino. 2021. Where We of the first security evaluations of CSRF defense as implemented Stand (or Fall): An Analysis of CSRF Defenses in Web Frameworks. In by popular web frameworks, with the overarching goal to identify Proceedings of ACM Conference (Conference’17). ACM, New York, NY, USA, additional explanations to the occurrences of such an old vulner- 16 pages. https://doi.org/10.1145/nnnnnnn.nnnnnnn ability. Starting from a review of existing literature, we identify 16 CSRF defenses and 18 potential threats agains them. Then, we 1 Introduction evaluate the source code of the 44 most popular web frameworks Cross-Site Request Forgery (CSRF) is among the oldest web vul- across five languages (i.e., JavaScript, Python, Java, PHP, andC#) nerabilities, consistently ranked as one of the top ten threats to covering about 5.5 million LoCs, intending to determine the imple- web applications [88]. Successful CSRF exploitations could cause re- mented defenses and their exposure to the identified threats. We mote code execution [111], user accounts take-over [85, 87, 90, 122], also quantify the quality of web frameworks’ documentation, look- or compromise of database integrity—to name only a few in- ing for incomplete, misleading, or insufficient information required stances.
    [Show full text]
  • Parameter-Free Probabilistic API Mining Across Github
    Parameter-Free Probabilistic API Mining across GitHub Jaroslav Fowkes Charles Sutton School of Informatics University of Edinburgh, Edinburgh, EH8 9AB, UK {jfowkes, csutton}@ed.ac.uk ABSTRACT are variations on a theme, repeating different variations of Existing API mining algorithms can be difficult to use as ways to repeat the same few API methods. they require expensive parameter tuning and the returned set The fundamental reason for this, we argue, is that current of API calls can be large, highly redundant and difficult to API mining methods are built on statistically shaky ground. understand. To address this, we present PAM (Probabilistic Specifically, API mining algorithms largely employ frequent API Miner), a near parameter-free probabilistic algorithm for sequence mining, which is a family of techniques from the mining the most interesting API call patterns. We show that data mining literature that takes as input a database of se- PAM significantly outperforms both MAPO and UPMiner, quences and from those attempts to identify a set of patterns achieving 69% test-set precision, at retrieving relevant API that frequently occur as subsequences. In the context of API call sequences from GitHub. Moreover, we focus on libraries mining, each sequence in the database is the list of API for which the developers have explicitly provided code exam- methods called by some client method, and the subsequence ples, yielding over 300,000 LOC of hand-written API example patterns that are mined are candidates for API patterns. code from the 967 client projects in the data set. This evalu- Frequent sequence mining methods are very good at their ation suggests that the hand-written examples actually have intended purpose, which is to efficiently enumerate subse- limited coverage of real API usages.
    [Show full text]
  • Ausarbeitung
    Seminararbeit Webframeworks Konstantin Tkachuk 13. Juli 2014 Prof. Dr. Jan Jurjens¨ Lehrstuhl 14 Software Engineering Fakult¨at Informatik Technische Universit¨at Dortmund Otto-Hahn-Straße 14 44227 Dortmund http://www-jj.cs.uni-dortmund.de/secse Konstantin Tkachuk [email protected] Matrikelnummer: 140399 Studiengang: Master Informatik Sicherheit und Compliance im Softwareengineering und der Industrie Thema: Webframeworks Eingereicht: 13. Juli 2014 Betreuer: Daniel Poggenpohl Prof. Dr. Jan Jurjens¨ Lehrstuhl 14 Software Engineering Fakult¨at Informatik Technische Universit¨at Dortmund Otto-Hahn-Straße 14 44227 Dortmund i ii Ehrenw¨ortliche Erkl¨arung Ich erkl¨are hiermit ehrenw¨ortlich, dass ich die vorliegende Arbeit selbstst¨andig ange- fertigt habe; die aus fremden Quellen direkt oder indirekt ubernommenen¨ Gedanken sind als solche kenntlich gemacht. Die Arbeit wurde bisher keiner anderen Prufungsbeh¨ ¨orde vorgelegt und auch noch nicht ver¨offentlicht. Dortmund, den 13. Juli 2014 Konstantin Tkachuk iii Abstrakt Die Nutzung von Webframeworks bei der Entwicklung von komplexen Web Appli- kationen ist heute unvermeidbar. Leider macht die enorme Menge der existierenden Frameworks die Wahl des richtigen zu einem nicht trivialen Problem. Im Rahmen dieser Arbeit wird dem Leser ein Uberblick¨ uber¨ die Gemeinsamkeiten und Un- terschiede der Webframeworks GWT, Vaadin und Apache Wicket verliehen und es werden passende Anwendungsbereiche vorgestellt. Das Thema Sicherheit wird dabei besonders hervorgehoben. iv INHALTSVERZEICHNIS Inhaltsverzeichnis 1 Einleitung 1 1.1 Motivation und Hintergrund . .1 1.2 Ziele der Arbeit . .1 1.3 Aufbau der Arbeit . .2 2 Google Web Toolkit 3 2.1 Uberblick¨ .................................3 2.2 Installation . .3 2.3 Aufbau einer GWT-Applikation . .4 2.4 Features..................................5 2.4.1 Development Mode und Production mode .
    [Show full text]
  • Maven: the Complete Reference I
    Maven: The Complete Reference i Maven: The Complete Reference Ed. 1.0 Maven: The Complete Reference ii Contents 1 Introducing Apache Maven1 1.1 Maven. What is it?....................................1 1.2 Convention Over Configuration...............................2 1.3 A Common Interface....................................3 1.4 Universal Reuse through Maven Plugins..........................3 1.5 Conceptual Model of a "Project"..............................4 1.6 Is Maven an alternative to XYZ?..............................5 1.7 Comparing Maven with Ant................................6 2 Installing Maven 10 2.1 Verify your Java Installation................................ 10 2.2 Downloading Maven.................................... 11 2.3 Installing Maven...................................... 11 Maven: The Complete Reference iii 2.3.1 Installing Maven on Linux, BSD or Mac OSX................... 12 2.3.2 Installing Maven on Microsoft Windows...................... 12 2.4 Testing a Maven Installation................................ 13 2.5 Maven Installation Details................................. 13 2.5.1 User-specific Configuration and Repository.................... 14 2.5.2 Upgrading a Maven Installation.......................... 15 2.6 Uninstalling Maven..................................... 15 2.7 Getting Help with Maven.................................. 15 2.8 About the Apache Software License............................ 16 3 The Project Object Model 18 3.1 Introduction......................................... 18 3.2 The POM.........................................
    [Show full text]
  • Papers on the Topic
    Parameter-Free Probabilistic API Mining across GitHub Jaroslav Fowkes Charles Sutton School of Informatics University of Edinburgh, Edinburgh, EH8 9AB, UK {jfowkes, csutton}@ed.ac.uk ABSTRACT Despite a number of interesting proposed tools, including Existing API mining algorithms can be difficult to use as well known ones such as MAPO [44] and UPMiner [40], so far they require expensive parameter tuning and the returned set API mining tools have not yet gained wide-spread adoption in of API calls can be large, highly redundant and difficult to development environments such as Eclipse and Visual Studio. understand. To address this, we present PAM (Probabilistic We suggest that the fundamental reason for this is that the API Miner), a near parameter-free probabilistic algorithm for quality of the extracted patterns is not yet high enough: mining the most interesting API call patterns. We show that the patterns returned by current methods are numerous and PAM significantly outperforms both MAPO and UPMiner, highly redundant (Section 5). For example, Figure 5 shows achieving 69% test-set precision, at retrieving relevant API the top ten API patterns extracted by two state of the art call sequences from GitHub. Moreover, we focus on libraries methods. To a large extent, the patterns from both methods for which the developers have explicitly provided code exam- are variations on a theme, repeating different variations of ples, yielding over 300,000 LOC of hand-written API example ways to repeat the same few API methods. code from the 967 client projects in the data set. This evalu- The fundamental reason for this, we argue, is that current ation suggests that the hand-written examples actually have API mining methods are built on statistically shaky ground.
    [Show full text]
  • Apache Wicket
    Apache Wicket Trifork Projects Copenhagen A/S Niels Sthen Hansen, [email protected] Claus Myglegaard Vagner, [email protected] Apache Wicket ● The Wicket approach ● Brief tour of key Wicket concepts ● Lots of code examples! ● Hello World©ish snippets ● Samples from a real-life Wicket app ● Thoughts on modelling & design, productivity and maintainability About Us ● Trifork A/S ● Finance ● Public ● Academy ● 110+ employees in Århus, Copenhagen & Zürich Todays Real-life Wicket App ● The Lessor Portal ● Allows employees to register payroll-related data on-line and to access personal information ● Integrates to 5 (and counting) payroll-systems ● Denmark, Norway and Germany ● Lessor A/S ● Payroll and HR systems ● Large and growing market share Example ● The Lessor Portal ● Absence registration approval – Non-trivial data model, ajax-heavy Web Applications ● More mission critical than ever ● Time-to-market is crucial ● ... and so is maintainability ● Users have come to expect more from wepapps ● More functionality ● More responsive (less page reloads) ● Why can©t all webapps be like, say, gmail ? Web Application Frameworks Echo Cocoon Millstone OXF Struts SOFIA Tapestry WebWork RIFE Spring MVCCanyamo Maverick JPublish JATO Folium Jucas Verge Niggle Bishop Barracuda Action Framework Shocks TeaServlet wingS Expresso Bento jStatemachine jZonic OpenEmcee Turbine Scope WarfareJWAA Jaffa Jacquard Macaw Smile MyFaces Chiba Jbanana Jeenius JWarp Genie Melati Dovetail Cameleon JFormular Xoplon Japple Helma Dinamica WebOnSwing Nacho Cassandra Baritus Stripes
    [Show full text]
  • Technology Profile
    2021 Technology Profile https://azati.ai +375 (29) 6845855 Belarus, 31 K. Marks Street, Sections 5-6 Grodno, 230025 1 Table Of Contents TABLE OF CONTENTS page 01 DEPLOYMENT, BI & DATA page 09 WAREHOUSING GENERAL INFORMATION page 02 DATA SCIENCE & MACHINE LEARNING page 10 JAVA TECHNOLOGIES page 03 MONITORING TOOLS, PORTALS & SOLUTIONS, page 11 VERSION CONTROL RUBY & JAVASCRIPT TECHNOLOGIES page 04 VERSION CONTROL, SDK & OTHER TOOLS page 12 WEB & PHP TECHNOLOGIES page 05 OTHER TOOLS page 13 MOBILE DEVELOPMENT & DATABASES page 06 SOFTWARE TESTING & QA page 07 APPLICATION DEPLOYMENT page 08 2 General Information 01 PROGRAMMING LANGUAGES: 02 MARK-UP AND MODELING 05 SOFTWARE ARCHITECTURE PATTERNS: LANGUAGES: Java Representational State Transfer (REST/RESTful) JavaScript (ES5/ES6) HTML (4/5) Model-View-Controller (MVC) PHP XSLT Microservices TypeScript UML GraphQL PL/SQL Kotlin Smalltalk C 03 PROJECT MANAGEMENT C++ METHODOLOGIES: C# Agile (Kanban/SCRUM) Groovy Waterfall Delphi Behavior-driven development (BDD) Pascal Test-driven development (TDD) Python Feature-driven development (FDD) SQL Ruby R CoffeeScript 04 DEVELOPMENT APPROACHES: Perl Continuous Delivery (CD) Bash Continuous Integration (CI) Shell 3 Java Technologies 06 JAVA TECHNOLOGIES: 07 JAVA FRAMEWORKS: Apache POI Java (7/8/9) Spring Apache Wicket Java Servlet Spring Boot Apache CXF Java Database Connectivity (JDBC) Spring REST Apache Shiro Java REST Spring MVC Apache Camel Java Persistence API (JPA) Spring Data Java Message Service (JMS) Spring Security 08 JAVA LIBRARIES: JBoss Drools
    [Show full text]