Concrete Architecture of Firefox 2

24
Concrete Architecture of Firefox 2 Team One July 6, 2007

description

Concrete Architecture of Firefox 2. Team One July 6, 2007. Agenda. Introduction Concrete Architecture Comparison with Conceptual Modules JavaScript Interpreter XML Parser Display Backend Conclusion. Introduction. Analyzing Concrete Architecture - PowerPoint PPT Presentation

Transcript of Concrete Architecture of Firefox 2

Page 1: Concrete Architecture of Firefox 2

Concrete Architecture of Firefox 2

Concrete Architecture of Firefox 2

Team OneJuly 6, 2007

Team OneJuly 6, 2007

Page 2: Concrete Architecture of Firefox 2

AgendaAgenda• Introduction• Concrete Architecture• Comparison with Conceptual• Modules• JavaScript Interpreter• XML Parser• Display Backend

• Conclusion

• Introduction• Concrete Architecture• Comparison with Conceptual• Modules• JavaScript Interpreter• XML Parser• Display Backend

• Conclusion

Page 3: Concrete Architecture of Firefox 2

IntroductionIntroduction

• Analyzing Concrete Architecture• Previously researched

Conceptual Architecture• Extracted Architecture from

code

• Analyzing Concrete Architecture• Previously researched

Conceptual Architecture• Extracted Architecture from

code

Page 4: Concrete Architecture of Firefox 2

Comparison with Conceptual

Comparison with Conceptual

• High cohesion (XPCOM)• Additional layers• Extensions• Common

• Additional dependencies

• High cohesion (XPCOM)• Additional layers• Extensions• Common

• Additional dependencies

Page 5: Concrete Architecture of Firefox 2

Conceptual ArchitectureConceptual Architecture

Page 6: Concrete Architecture of Firefox 2

Concrete BoxesConcrete Boxes

Page 7: Concrete Architecture of Firefox 2

Concrete ArrowsConcrete Arrows

Page 8: Concrete Architecture of Firefox 2

Modules: JS InterpreterModules: JS Interpreter

• Called SpiderMonkey• Written in C• Many classes and packages, but

6 seem to be most important

• Called SpiderMonkey• Written in C• Many classes and packages, but

6 seem to be most important

Page 9: Concrete Architecture of Firefox 2

LiveConnectLiveConnect

• Package in SpiderMonkey• Bridge between JavaScript and

Java• Depends on a few internal

classes and XPCOM

• Package in SpiderMonkey• Bridge between JavaScript and

Java• Depends on a few internal

classes and XPCOM

Page 10: Concrete Architecture of Firefox 2

LiveConnect DependenciesLiveConnect

Dependencies

Page 11: Concrete Architecture of Firefox 2

XPConnectXPConnect

• Package in SpiderMonkey• Allows JavaScript objects access

to XPCOM objects and vice-versa

• Depends on some internal classes and XPCOM

• Package in SpiderMonkey• Allows JavaScript objects access

to XPCOM objects and vice-versa

• Depends on some internal classes and XPCOM

Page 12: Concrete Architecture of Firefox 2

XPConnect Dependencies

XPConnect Dependencies

Page 13: Concrete Architecture of Firefox 2

JSInterpJSInterp

• Class in SpiderMonkey• JavaScript Interpreter Class• All classes that depend on

JSInterp are internal• All classes JSInterp depends on

are internal

• Class in SpiderMonkey• JavaScript Interpreter Class• All classes that depend on

JSInterp are internal• All classes JSInterp depends on

are internal

Page 14: Concrete Architecture of Firefox 2

API ClassesAPI Classes

• JSAPI, JSXDRAPI, JSDbgAPI• Used by external classes• Depend on and are depended

on by many internal classes• Façade Pattern

• JSAPI, JSXDRAPI, JSDbgAPI• Used by external classes• Depend on and are depended

on by many internal classes• Façade Pattern

Page 15: Concrete Architecture of Firefox 2

API ClassesAPI Classes

• JSAPI is the main API for SpiderMonkey

• JSXDRAPI is the external data representation API

• JSDbgAPI is SpiderMonkey’s debug API

• JSAPI is the main API for SpiderMonkey

• JSXDRAPI is the external data representation API

• JSDbgAPI is SpiderMonkey’s debug API

Page 16: Concrete Architecture of Firefox 2

Modules: XML ParserModules: XML Parser

Page 17: Concrete Architecture of Firefox 2

XML ParsersXML Parsers• expat module performs DOM parsing• xml module performs SAX parsing• Both work independently of each other• expat module is self-contained and

has no dependencies; however, xml module relies on stream input and string operations support from xpcom

• expat module performs DOM parsing• xml module performs SAX parsing• Both work independently of each other• expat module is self-contained and

has no dependencies; however, xml module relies on stream input and string operations support from xpcom

Page 18: Concrete Architecture of Firefox 2

htmlparser Modulehtmlparser Module• Abstracts away string and unichar

issues• Delegates parsing requests to expat

and xml modules, and receives the result back.

• Implements something close to a façade, however, xml talks to xpcom

• Abstracts away string and unichar issues

• Delegates parsing requests to expat and xml modules, and receives the result back.

• Implements something close to a façade, however, xml talks to xpcom

Page 19: Concrete Architecture of Firefox 2

Deviation from Conceptual

Deviation from Conceptual

• Nothing is invoking/depending on parser module for XML parsing requests

• Could be a dynamic dependency rather than static, which bfx and lsedit cannot capture

• Nothing is invoking/depending on parser module for XML parsing requests

• Could be a dynamic dependency rather than static, which bfx and lsedit cannot capture

Page 20: Concrete Architecture of Firefox 2

Modules: Display Backend

Modules: Display Backend

• Set of platform-independent drawing primitives

• Adapter to the native graphics interface (GTK, GDI, etc)

• PostScript handling• Shared sub-components

• Set of platform-independent drawing primitives

• Adapter to the native graphics interface (GTK, GDI, etc)

• PostScript handling• Shared sub-components

Page 21: Concrete Architecture of Firefox 2

Modules: Display Backend

Modules: Display Backend

Page 22: Concrete Architecture of Firefox 2

Deviation from Conceptual

Deviation from Conceptual

• UI talks directly to Display Backend

• Interaction with Common• intl• xpcom• nsprpub

• UI talks directly to Display Backend

• Interaction with Common• intl• xpcom• nsprpub

Page 23: Concrete Architecture of Firefox 2

ConclusionConclusion

• Conceptual Architecture Useful• Additional Layers• Additional Dependencies

• Conceptual Architecture Useful• Additional Layers• Additional Dependencies

Page 24: Concrete Architecture of Firefox 2

Thank youThank you

Questions?Questions?