Version 50

    Seznam možných témat.         (Krátký odkaz na tuto stránku: diplomky.jboss.cz )

    Pokud máte vlastní nápad na téma, kontaktujte ondra at redhat.com. JBossáci můžou přidávat přímo.

     

    Nový systém pro správu diplomek: http://thesis-managementsystem.rhcloud.com/

    Diplomky odsud se postupně objeví i tam.

     

    Kdo by měl zájem o vypracování (studenti), kontaktujte ondra at redhat.com nebo toho, kdo je pod tématem napsaný.

         Případně zkuste najít téma v informačním systému vaší fakulty.

    Kdo by měl zájem o vedení, můžete se pod práci připsat (i víc zájemců).

     

    Podmínky a další info najdete na fedora.cz/diplomky . Ve zkratce, pokud

    • uvolníte projekt pod GPL či jinou opensource licencí,
    • dáte zdrojáky na GitHub, GoogleCode apod.,
    • a budete plynule spolupracovat s vedoucím a komunitou JBoss,

    pak je vše ok.

     

    Za JBoss (aspoň za sebe) bych přidal:

    • Projekt by se měl držet standardů.
    • Měl by obsahovat automatizované testy.
    • Musí mít dokumentaci (možno zrecyklovat část textu BP / DP).

     

     

     

    BP: tail-like Logging subsystem hook for JBoss AS 7 to provide logging through management API

    Potential leaders: Ondřej Žižka, James Perkins, Heiko?

     

    Currently, the only way to see the log messages as they are comming is to tail the log file, or use custom appender.

    There could be an appender which would push the messages to a connection to Management API (HTTP/JSON based).

    Ideally, it would use a non-blocking connection and push partial JSON.

    James Perkins already did initial work in this field: https://issues.jboss.org/browse/AS7-2213.

     

    As a follow-up, it could be possible to integrate this with NetBeans or IDEA (Eclipse already has it done differently).

     

    DP: ActiveMQ integration with Torquebox

    Potential leaders: Václav Tunka <vtunka at redhat.com>, Ben Browning, Bob McWirther

     

    TorqueBox is a new kind of Ruby application platform that supports technologies such as Ruby on Rails and Sinatra, while extending the footprint of Ruby applications to include built-in support for services such as messaging, scheduling, caching, and daemons. TorqueBox provides an all-in-one environment, built upon the latest JBoss AS Java application server and JRuby. Functionality such as clustering, load-balancing and high-availability is included right out-of-the-box. Apache ActiveMQ is an open source message broker which fully implements the Java Message Service 1.1 (JMS), provides clustering, multiple message stores, and ability to use any database as a JMS persistence provider besides VM, cache, and journal persistency. The goal of this thesis is to develop a tool that enables effective integration of TorqueBox and JMS based ActiveMQ messaging implementation. Contributions to various open source projects may be part of the thesis.

     

    • Get familiar with Torquebox, JBoss AS, JMS/ActiveMQ.  (architecture, functionality, api).
    • Analyse existing integration points with TorqueBox and current HornetQ messaging provider.
    • Analyse and develop integration of ActiveMQ and TorqueBox.
    • Publish the resulting software under open source license.
    • Create publicly available documentation demonstrating usage of this tool.
    • Document and discuss result of your thesis.

     

    BP: Benchmarks for JRuby and other Ruby implementations

    Potential leaders: Václav Tunka <vtunka at redhat.com>, Charles Nutter, Thomas Enebo


    JRuby is an implementation of the Ruby programming language atop the Java Virtual Machine, written largely in Java. It is free software released under a three-way CPL/GPL/LGPL license. JRuby is tightly integrated with Java to allow the embedding of the interpreter into any Java application with full two-way access between the Java and the Ruby code (similar to Jython for the Python language). The goal of this thesis is to compare JRuby to standard MRI C Ruby implementation and others such as YARV, Rubinius, MagLev with concentration on Garbage Collection (GC) and parallelism & concurrency. Contributions to various open source projects may be part of the thesis.

     

    • Get familiar with Ruby and JRuby.  (architecture, functionality, api)
    • Analyse existing benchmarks between various Ruby implementations such as MRI, JRuby, YARV, Rubinius and MagLev.
    • Extend existing benchmarks / develop new benchmarks for Garbage Collection (GC) and parallelism & concurrency.
    • Publish the resulting software under open source license.
    • Create publicly available documentation demonstrating usage of this tool.
    • Document and discuss result of your thesis.

    DP: JBoss Application Server enablement for ARM architecture

    Potential leaders: Václav Tunka <vtunka at redhat.com>, Jean-Frederic Clere, Mladen Turk

     

    JBoss Application Server (AS 7) is a modular, lightweight Java EE6 implementation using JBoss Web as servlet engine. The goal of this thesis is to enable efficient running of AS7 on ARM achitecture (eg. on Raspberry Pi). Contributions to various open source projects may be part of the thesis.

    • Get familiar with JBoss AS7 and JBoss Web  (architecture, functionality, API).
    • Analyse existing integration points between JBoss AS7 and JBoss Web native components.
    • Get JBoss Web native components to build under ARM, submit patches to community if necessary.
    • Develop integration between JBoss AS7 and native component builds for ARM.
    • Publish the resulting software under open source license.
    • Create publicly available documentation demonstrating usage of this tool.
    • Document and discuss result of your thesis.

    DP: Distributed Social Networking Protocol

    Potential leaders: Ondřej Žižka

     

    Currently, the world of social networks is dominated by few plaeyrs - Facebook, Google Plus, Qzone, Twitter, LinkedIn - who compete on all levels, which limits data exchange. And they own user data.

    This project should design a protocol to exchange the basic social media content, i.e. instant messaging, posts, photos, links, events, and user profile data, amongst independent servers.

    The protocol must be secured, distributed, allow both synchronous (for chat) and asynchronous exchange (other content).

    It would have to support all of CRUD.

    Needed or strongly recommended:

    • Knowledge of these protocols (and their history): HTTP, XMPP + extensions, SMTP, NNTP, IMAP, .
    • Education/experience in cryptography.
    • Java and Java EE 6.
    • Knowledge of Google+, Google Wave, Facebook, LinkedIn, Twitter, GitHub.
    • Knowledge/experience with javax.nio and websockets

     

    Integral part of this project would be a reference implementation - a sever application communicating over the designed protocol, written in Java, (preferably) using Java EE.

     

    News 2013-05: https://www.eff.org/deeplinks/2013/05/google-abandons-open-standards-instant-messaging

     

     

    DP: JBoss AS 7 PHP/Quercus integration (may be for multiple students)

    Potential leaders: ozizka

    One applicant

    PHP is popular, Java is fast, development with JBoss AS is a pleasure. It would be cool to have it together.

    There's an implementation of PHP interpreter and libraries in Java - Caucho Quercus, which is reportedly 4x faster.

    It seems to have lost momentum, but it's almost fully compatible with the original PHP 5.

     

    First goal is to create a deployer which would scan a deployment for (public) PHP files, bind them to JBoss Web AS service.

    Also, it would have to deal with loading the other PHP scripts, probably through VFS.

     

    Second goal would be to research which Java EE concepts could be integrated, and how.

    For example, having context and dependency injection (CDI) integrated with this would also be nice. PHP doesn't have annotations, but Quercus has hooks for variable read/write, so there could be some magical global variables which would query CDI when read - e.g. $_PersistenceContext, $_CDI[...] etc.

     

    Inspiration:  Caucho Resin has some PHP integration. See this case study.

     

    DP: JBoss AS 7 application-level exception logging/storage, categorization, and analysis (ABRT style)

    Potential leaders: ozizka. Other contacts: Jirka Moskovčák jmoskovc, James Perkins. Tracking jira: ESSC-9

    Taken.

     

    It would

    • using JVM debugging agent, create a breakpoint of type "when Exception thrown",  in the application
      • - or - using AS custom async logger (perf advantage)
    • analyze stacktrace and msg,
    • compare with existing DB of exceptions,
    • suggest a solution

    Could work as an AS service (?)

    Possible ABRT integration.

     

    DP: HTML 5 + Java EE based MMO Civilization-like game (multiple students)

    Potential leaders: ozizka

    This would be a lot of work; might be implemented by 2 or even 3 students (web UI, server side, game logic)

    Firaxis (Sid Meier's company) cooperates with korean XLgames to create such game, but only for Asia (??)

    1 possible applicant, but for a bit different game concept (Travian-like)

     

    Grid-based turn-based strategy game.

    Basically, it would work like the old Civilization, only it would be multiplayer.

    The client side would be written in a JavaScript client-side framework and get the data from the server using REST/JSON.

    Could also be implemented in Google Web Toolkit or Apache Wicket.

     

    DP: HTML 5 + Java EE based MMO Transport Tycoon-like game (multiple students)

    Potential leaders: ozizka

    This would be a lot of work; might be implemented by 2 -4 students (web UI, server side, game logic)

     

    Grid-based realtime economical strategy game.

    Basically, it would look like the old Transport Tycoon (Deluxe), but the game concepts would be adjusted for MMO.

    The client side would be written in a JavaScript client-side framework and get the data from the server using REST/JSON.

     

    BP/DP: Isometric rendering with HTML 5

    Potential leaders: ozizka

    Derived from the previous topic.

    Taken through JMMC - Antonín Vlček.


    Izometrické zobrazení je pro svou jednoduchost a schematičnost oblíbené zejména u her, může ale sloužit i pro vizualizaci dat. Vice o dosavadních možnostech např. zde:

    http://ondra.zizka.cz/stranky/programovani/web_javascript_ajax_canvas/javascript-isometric-libraries.texy

    S novými možnostmi HTML 5 se také otevírá  možnost efektivně (tj. s přijatelnou odezvou) vykreslovat izometrické  zobrazení a rozpoznat polohu kurzoru myši v zobrazovaném prostoru.

     

    DP: IDE plugin for migration to JBoss AS 7

    Potential leaders: ozizka

    Could be planned by JBDS team. See JBDS-2501.

    Some related work was done by Ian Tewksburry: https://github.com/windup/windup-eclipse-plugin

     

    Eclipse, NetBeans or IDEA plugin which would migrate given Java EE project from legacy to Java EE 6, respectively JBoss AS 7.

    Possible re-use of existing migration projects (JBoss Cake, Migrator57, ...)

    DP: NetBeans IDE support for JBoss AS 7

    Done in NetBeans 7.3.1.

    NetBeans has various features to deal with servers: Start/stop, deploy, start in debug mode, show logs, also JRebel, ...

    This need a special plugin.

    There's already some work done by Oleg Kulikov, not sure how far it went.

    DP: CDI beans inspection with dynamic navigable graph

    Leaders: ozizka, jharting

    Taken - Jakub Niedermertl

     

    Revamped idea of Ales Justin's work:  http://in.relation.to/12065.lace

    But as can be seen, generating a static image isn't the way.

    A tool which would nagivate across the graph similar to JProfiler's graphs would be cool to have.

     

    Architecture:

    A lib in an app would publish a REST API for exposing CDI beans (or a AS CDI subsystem plugin would make it show additional operations in DMR).

    This API would be read by various "clients": Eclipse plugin, NetBeans plugin, HTML 5 page.

    Eclipse/NetBeans plugin would:

    1) Do a static analysis and show the CDI beans/producers/... (Eclipse has CDI support already through JBDS; NetBeans also has something).

    2) Connect to the aforementioned API and show info from a running server.

    The HTML 5 page would connect to the API and show the information from the server as well.

    All the graphs will be browsable, i.e. click on a node highlights and enlarges it and neighbors (up to given distance), and dim the others.

    The graph would be searchable by @Qualifier, Type, and possibly other traits.

    IDE plugins could do export to an image, maybe SVG.

    Clicking on a node would show additional information (if reading from the API - instance's properties, maybe toString())

    In the IDE, clicking would also highlight the bean's class in project view.

    In the IDE, Ctrl+clicking would jump to the place where the CDI bean is defined.

     

     

    BP/DP: RichFaces cross-framework components - Apache Wicket 6.x integration layer

    Potential leaders: ozizka

     

    RichFaces components usable not only for JSF, GWT and something, but also Wicket.

    BP/DP: JBoss AS 7 self-monitoring (history storage + web console plugin)

    Potential leaders: ozizka

    Contacts: James Perkins, Heiko Braun

     

    This would be an internal AS service providing history of some metrics, and perhaps a web interface, or a plugin for JBoss AS web console (which is written in GWT).

    Part of it would be AS7-2213 - Hooking in to the AS logging subsystem via mgmt API.

     

     

    DP: Integration of FakeReplace with various frameworks

    FakeReplace is a JRebel-like tool by Stuart Douglas.

    It allows to replace classes of a deployed app without re-deploying it - it fiddles with JVM content directly.

    As Stuart said, the main part of the work is making it work with various frameworks: CDI, JPA, web frameworks, ...

    This topic would consist of identifying such frameworks, picking some of them and adding support for them to FakeReplace.

     

    DP: Java EE 6-based opensource issue tracker á-la Jira (possibly for multiple students)

     

    Potential leaders: ozizka (if implemented in Wicket :-)

    1 applicant

     

    After a brief research, one can find out that there's no Java-based quality free opensource issue tracker (see e.g. Wiki).

    The task would be to create a modern modular customizable pluginable multi-user multi-project "web 2.0" database-backed issue tracker.

    Customizations would include user group hierarchy, issue states (ideally state automata with conditions to change), different party acks, versions, project components, privileges.

    Plugins would allow adding custom fields and appropriate UI  bindings.

    Searching would be done through Lucene over ElasticSearch or similar.

     

    Inspiration:

     

    JBoss AS 7 TrayIcon

    (Too easy, would be a part of some other topic; or maybe BP?)

     

    Tray icon with a menu with things  like:

    • start/stop/restart
    • open web console
    • open deployed app's context root
    • ding on deployment success/error
    • show server.log
    • open current config file (settings.xml)
    • open CLI (+ --gui)
    • set property
    • deploy a war
    • etc...

     

    DP: Integration of Jenkins CI with JBoss AS 7

    Potential leaders: vjuranek

     

    Jenkins CI is the most popular continuous integration server which contains embedded servlet container Winstone, which is archaic and not maintained. The aim of this thesis is to replace Winstone by JBoss AS 7.

    The student will:

    • get familiar with Jenkins CI, especially with extras-executable-war package,
    • get familiar with JBoss AS 7,
    • compare Winsotne with AS 7 and identify all possible backward compatibility issues (e.g. configuration options available in Winstone, but missing in AS 7),
    • resolve possible backward compatibility issues by implementing new features into AS 7 or by modification of appropriate part of Jenkins,
    • replace embedded Winstone servlet container by AS 7,
    • donate project to Jenkins community.

     

    BP/DP: Improvement of Delta cloud plugin for Jenkins CI

    Potential leaders: vjuranek

     

    The aim of this thesis is to improve Delta cloud plugin and extend its functionality to cover all features provided by Delta cloud API. Jenkins CI is the most popular continuous integration server. Delta cloud API is Apache project which tries to unify API for different cloud providers and thus allows the user to implement cloud provider independent application.

     

    The student will:

    • get familiar with Jenkins CI,
    • get familiar Delta cloud API,
    • analyze which API features can be used by Jenkins,
    • improve Delta cloud plugin to cover all features provided by Delta cloud API identified in previous step,
    • contribute the code back to the Delta cloud plugin project.

     

    BP: Indexing Red Hat Bugzilla with search.jboss.org / JBoss.org's DCP

    Implement a tool which would push issue data, updates and deletes periodically to JBoss.org's DCP: http://docs.jbossorg.apiary.io/#contentpushapi

    Example sources: https://github.com/searchisko/searchisko

     

    BP: Jenkins CI plugin investigation

    Potential leaders: vjuranek

     

    Advanced usage of continuous integration server Jenkins CI. Jenkins CI is the most popular continuous integration server. There are several hundreds plugin for Jenkins CI which allows to implement sophisticated scenarios of building, testing and deploying software and thus automate substantial part of software development life cycle.

     

    The student will:

    • gather the list of the Jenkins CI plug-ins,
    • identify plug-ins which can be used for managing software life cycle,
    • install and verify the usability of each plug-in,
    • describe and categorize each verified plug-in,
    • propose several patterns for software life cycle automation using these plug-ins,
    • apply proposed patterns to selected project in JBoss QE and eventually propose improvements in project automation,
    • donate the text to Jenkins CI community (can be considered as an extension to Jenkins: The definite guide book).

    Pro inspiraci: