Giter Club home page Giter Club logo

js-tda's Introduction

JS-TDA - A browser-based rewrite of Java's Thread Dump Analyzer

Build Status --> TRY IT!

All dumps will be analyzed in your browser. Nothing is stored, or transmitted at any point.

What is this?

JS-TDA is what the name implies: a browser-based JavaScript reimplementation of the original Java Thread Dump Analyzer by Ingo Rockel. Given a log file with one or more standard Sun JDK dump files, JS-TDA will provide users the ability to figure out what their Java app is actually doing.

Thread dump: thread expanded, tooltip on dump name

Thread Dump

Monitor view: monitor expanded, tooltip on long monitor name

Monitor View

Why

I've been using TDA for a long, long time. It's a fantastic, no frills utility that helps me figure out what a given process is up to. I've worked at a number of companies where, for whatever reason, I found myself analyzing thread dumps with TDA. Recently I was given a thread dump from a JVM running on Java 8, and that's when I realized TDA didn't (at the time) have support for that format.

I spent some time nosing around the TDA forums and mailing lists and noticed that the last release had been in 2010. At the time the project looked dead. I also ran across the cool Spotify TDA, but the wasn't really what I wanted. I realize there are other tools than TDA, such as the IBM thread analyzer and Samurai. But damnit, I like TDA.

I considered forking TDA, but it seemed to me that it would actually be fairly useful to have a browser-based, JavaScript version of a thread dump analyzer. Reading the Spotify analyzer and TDA source certainly made this a much easier task: they did all the hard work for me.

Any mistakes in parsing are solely my own, and I'm honestly not a great web developer. Please do let me know if you find something.

What about TDA 2.3?

Yeah, so funny story.. .When I originally decided to write JS-TDA, I did my due dilligence and it looked like TDA was about as dead as possible. I spent a month, maybe six weeks, fleshing out JS-TDA in my "spare time." And just when I'm doing my first push to GitHub and am writing my README, I go to the java.net project page to grab links. That's when I noticed that Ingo Rockel moved TDA to GitHub, and released 2.3 - the first release in six years - four days prior. Great minds think alike?

Why bother releasing JS-TDA then? Uh, well, it's done and it works. It also seems to me that there's a good use for having an analyzer that runs in a browser, especially if it's a good enough approximation of the real TDA. I know it'll keep the confidentiality of whatever dump I'm dissecting (which my employers appreciate), and I can add features as I please. And who knows, maybe one day one of my admiring fans will get me my dream job!

OK, so TDA is older and more accurate. It has features JS-TDA doesn't, it analyzes different formats of dumps, and dollars to donuts, Ingo knows a lot more about this stuff than I do. Go use the actual TDA. Unless, of course, you need something web-based, or want my sweet, sweet UI. Or maybe I'll come up with a cool idea you need.

Using it

Build Instructions

Like all the new web stuff, you're going to need a few things:

  • Node.js - the build chain is unfortunately Node based
  • Bower - for dependency management
  • Gulp - the build tool

Once you have the toolchain installed, you're going to want to do the following:

npm install && bower install && gulp

This will grab all the NPM modules, grab all the Bower dependencies and then call Gulp to do all the building and packaging. Artifacts will be in the newly created dist directory:

├───debug                                         
│   │   index.html                                
│   │   js-tda.css                                
│   │   js-tda.js                                 
│   │                                             
│   └───fonts                                     
│           glyphicons-halflings-regular.eot      
│           glyphicons-halflings-regular.svg      
│           glyphicons-halflings-regular.ttf      
│           glyphicons-halflings-regular.woff     
│           glyphicons-halflings-regular.woff2    
│                                                 
└───release                                       
    │   index.html                                
    │   js-tda.min.css                            
    │   js-tda.min.js                             
    │                                             
    └───fonts                                     
            glyphicons-halflings-regular.eot      
            glyphicons-halflings-regular.svg      
            glyphicons-halflings-regular.ttf      
            glyphicons-halflings-regular.woff     
            glyphicons-halflings-regular.woff2    

The "debug" build uses non-minified JS/CSS, and the "release" build uses minified assets. There are no external dependencies, just open the appropriate index.html in your browser.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.