• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Bear Bibeault
  • Devaka Cooray
  • Liutauras Vilda
  • Jeanne Boyarsky
Sheriffs:
  • Knute Snortum
  • Junilu Lacar
  • paul wheaton
Saloon Keepers:
  • Ganesh Patekar
  • Frits Walraven
  • Tim Moores
  • Ron McLeod
  • Carey Brown
Bartenders:
  • Stephan van Hulst
  • salvin francis
  • Tim Holloway

I'm confused about frameworks still  RSS feed

 
Ranch Hand
Posts: 169
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I have been looking at a lot of ads for entry level careers in java development, and they all seem to mention Spring or some other kind of framework.

I'm not exactly sure what it really is besides a set of pre-defined codes to make developing easier.

My first question is, are frameworks used in all applications, or are they just used for web applications?

Most of them I looked up were part of web development.  

The next question is, if you're only doing back end development, do you still need to learn frameworks?  

The last question is, what do frameworks accomplish that getting the same output would be impossible without them?
 
Bartender
Posts: 9487
184
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Frameworks are solutions to common complex problems.

You can do everything without using frameworks, but then you have to write your own code to solve the problems that those frameworks solve.

Frameworks are used in all sorts of applications. Web applications are common, because they contain a lot of regularly encountered problems, such as interpreting HTTP requests and converting their contents to strongly typed objects you can interact with, or performing security challenges to see if you're part of a company domain that has access rights to a certain resource. However, there are also frameworks to interact with certain pieces of hardware, so you don't have to manually fiddle with address lines or hardware pins or whatever.

You can also view the operating system as a framework to make dealing with your computer hardware easier. For instance, applications can call into the Win32 API to display windows on the screen, so they don't have to send low level instructions to the video card themselves.

Frameworks can be built on top of frameworks. AWT is built on top of the OS' native windowing system. Swing is built on top of AWT. Writing GUI applications in Java would be a real pain if you couldn't use Swing or JavaFX. It is definitely possible though.

In the end, use frameworks to avoid reinventing the wheel.

You might ask, what's the difference between a framework and a library? Well, I don't think there's a clearly drawn line between the two, but I consider a library to be a self-contained bundle of code that you can call into to perform some tasks, while a framework is a collection of libraries, combined with a philosophy of how to develop an application using that framework.

For instance, Joda Time is a library that made dealing with dates and times much easier before we had Java 8. It doesn't tell you what you should use it for or how you should develop your application.

Swing is a framework because it tells you how you should design your application. It has ideas about when your code is called, what threads you should use, what code your application should call and what it shouldn't, etc.
 
Kenneth Milota
Ranch Hand
Posts: 169
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I've used Swing to develop the applications that I have created thus far.  I'm just trying to work in back end developing mostly, so I don't want to endeavor on something that's going to take me off course and not be useful for that.  I'm trying to learn databases now as well, and trying to figure out what back end skills are going to be the most useful.
 
Stephan van Hulst
Bartender
Posts: 9487
184
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Back-end development is rife with frameworks. Examples include Spring for web request processing, MOXy for data binding, Hibernate for persistence, JSP for presentation (yes this is back-end), and the list goes on.
 
Greenhorn
Posts: 21
1
Java Windows
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Libraries are like a pile of tools. Frameworks are like a blueprint or ideology of how an application should work and be organized. They are attempting to standardize how something should work.

Frameworks are in all aspects of software development (front end web, back end web, mobile, desktop, etc. although web probably has the most and most talked about).

You don't need a framework. You could just build your app from scratch. However, a lot of companies use them because they speed up development time. It's also nice to use standardized functionality so you don't have to worry about it. You just accept that this is the correct way to build an app and move forward with building it.
 
Kenneth Milota
Ranch Hand
Posts: 169
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I guess what is concerning me is that I do most of my projects myself, but it seems like I have to incorporate a lot of front end principles to be able to make a project I can add to my GitHub profile.
 
Stephan van Hulst
Bartender
Posts: 9487
184
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Why do you feel that?
 
Kenneth Milota
Ranch Hand
Posts: 169
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Stephan van Hulst wrote:Why do you feel that?




What is it that I can do by myself with frameworks for back end without having someone who does front end very well make the code actually do something?
 
Stephan van Hulst
Bartender
Posts: 9487
184
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
You realize that websites are only one way that you can consume a web service, right?

You can design a complete web service that accepts REST requests, stores state in a database, etc. while at the front end you have a simple console application that takes commands from the user and communicates with the back-end over HTTP requests.

Not a single front-end framework or line of HTML, CSS or JavaScript in sight.
 
Kenneth Milota
Ranch Hand
Posts: 169
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I guess I just have some misconception of how this all works.
 
Kenneth Milota
Ranch Hand
Posts: 169
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Stephan van Hulst wrote:You realize that websites are only one way that you can consume a web service, right?

You can design a complete web service that accepts REST requests, stores state in a database, etc. while at the front end you have a simple console application that takes commands from the user and communicates with the back-end over HTTP requests.

Not a single front-end framework or line of HTML, CSS or JavaScript in sight.




Is there like a Layman's guide on this somewhere.  I think part of the reason I have such difficulty with programming is that it takes me ages just to understand what something even means before I can practice it.
 
Stephan van Hulst
Bartender
Posts: 9487
184
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I think you just have to do it. Understanding comes from making mistakes, not from staring at text until the light bulb goes on (well sometimes it does).
 
Bartender
Posts: 19954
94
Android Eclipse IDE Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Stephan van Hulst wrote:I think you just have to do it. Understanding comes from making mistakes, not from staring at text until the light bulb goes on (well sometimes it does).



It also takes time.

Contrary to modern business philosophy, some things simply have to grow at their own rate. Something farmers knew, but factory owners thought no longer applied because if you run the machines faster and longer, then you're more productive/profitable, right? At least until the machinery explodes for lack of maintenance and/or prolonged operation at high-stress levels.

The human mind is more like a farm than a factory. Over time, you'll gradually notice the connections, the meanings, and the reasons. The "light bulb" is really the point when they all fall together and make sense as a whole rather than being just random parts. It all has to grow together.

So you need practice to learn, but the time spent not practicing is also learning time. It's the time when the brain is running at idle and can sort through stuff in the background without any pressure to produce results and it's critical. You cannot run at "110%" - it's not possible. Nor can you run at 100% - it doesn't leave time for this background process any more than running Java code at 100% would leave the garbage collector time to do its thing.

We often say that these background inspirations come while taking a shower or sleeping, but truthfully it can happen any time you're not concentrating on the matter.

But the short answer to the question is that a framework is a pre-written/pre-debugged (we hope!) infrastructure designed to prevent us from having to re-create the entire Universe from scratch every time we design and code an application. Complex applications may employ multiple frameworks - for example, one for a web services interface, one for a GUI, one for database persistence, one for logging, and so on and so forth.
 
Kenneth Milota
Ranch Hand
Posts: 169
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I'm wondering.  How can you run a web services program if there's no website?  

Are frameworks all related to graphics and web?
If someone is just developing a method that outputs some kind of object variable, is there a method for that?
 
Kenneth Milota
Ranch Hand
Posts: 169
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Is there a method in a framework I meant.
 
Sheriff
Posts: 5443
147
Chrome Eclipse IDE Java Postgres Database VI Editor
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Here's a web service that will give you the current EST time:

http://worldclockapi.com/api/json/est/now

If you click it, you will get a JSON object with current time information.  Now imagine a Java program "clicking the link" and interpreting the JSON to display EST on a console.  No HTML involved.  HTTP is involved, but not HTML.  
 
Marshal
Posts: 67162
169
IntelliJ IDE Java jQuery Mac Mac OS X
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Kenneth Milota wrote:I'm wondering.  How can you run a web services program if there's no website?  


Just about everything knows how to use HTTP these days.

You can use a program like Postman to make requests, or you can use command line tools (curl, etc). You seem to be stuck on thinking that all programs need a front end. A web service and front end tools/programs that use them can be (and should be) completely separate.
 
Stephan van Hulst
Bartender
Posts: 9487
184
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Kenneth Milota wrote:Are frameworks all related to graphics and web?


No. An example I gave earlier was a framework that makes it easier for you to interact with some hardware. There are frameworks for every area of programming you can imagine.
 
Ranch Hand
Posts: 233
Eclipse IDE Mac Safari
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I have to agree - I'm also a long standing Swing developer and I find the buzz words very unintuitive and these days you seem to have to know a lot of frameworks and libraries to deliver a complete solution. My application is quite large, supports 8 languages and 3 database platforms. I looked at Spring for a while - could not fathom where to begin as each module seemed to refer to another one. It seems like you can't evaluate something without becoming an expert it in first. Being a sole developer on this project - productivity is a must. Maybe it's a age thing but I like visual development - for example Windobuilder Pro. These days you seem to have to do everything with maven which just "does it for you" which i find a little disconcerting as if one day it doesnt then there is a lack of understanding. I know which jars I need and what they do in my application today.

Vaadin looked interesting but now you have to subscribe to the Pro Tools and as I'm working on a open source project I can't justify it.

Just the rants of a old java programmer. :-)

Dave
 
Tim Holloway
Bartender
Posts: 19954
94
Android Eclipse IDE Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
My condolences to you, youngster.

Spring isn't that hard once you understand that it's formed around a core, which is the Inversion of Control bean factory. This factory is the one-stop shopping point for all Spring-Managed JavaBeans and it not only constructs the beans on demand, but also can wire them together like TinkerToys™, eliminating the need for you to have to manually hard-code links between beans. So the starting point for Spring - as well as quite a few other frameworks - is to understand IoC.

In addition to the fairly small Spring core, there are various functional domains which group related services together and attempt to provide as much commonality of operation as possible - which helps to lower the learning curve. For example, there's Spring Data, which provides services for all types of database programming from simple JDBC to JPA to NoSQL DBMS's such as MongoDB and even the really exotic stuff like Neo4J. Or Spring Batch, which eases the process of creating batch-mode applications. And the increasingly-popular Spring Boot. There's a domain (Project) for almost any common complex function you're likely to need.

As for myself, I've seen so many DDD (drag, drop, drool) visual designers come and go, I can't count them. An assistive design tool such as Eclipse is fine, but once they start thinking they can run your life, look out. One of the things that ultimately pushed me out of the Windows world was having to do late-night panic fixes where the project could only be built properly if you had an obsolete version of Visual Studio (with patches applied) running on an obsolete version of Windows (with fixpacks applied). In other words, a 1-line fix that required 3 hours of building an antiquated custom development environment first.

These days, all of my projects can be build on a non-GUI machine. I use the IDE for development, but if I cannot build the production module without an IDE, it's not acceptable.

I sympathise on Maven, though. I resisted it myself for a long time, because I don't like processes that happen by magic. There is a method to the madness, though. It's basically programming by declaration, and PBD is actually quicker and more reliable than explicit code. It's taking advantage of the idea that projects are more alike than they are different, and once you know what files go where, it's actually easier to hand off a project to a remote contractor on the other side of the planet, because if you do a "mvn clean", zip up the project directory, and pass it on, the person on the other end can completely build an identical copy of that same project without having to do any special adjustments to the recipient's computer. Before Maven, I routinely had to deal with projects that couldn't be safely passed on to another department in the same company.

I've worked in every environment from stand-alone to start-up to the largest shops in town, but more often than not I seem to be the sole person on a very complex project. So I can identify with you. I don't go chasing after every fad - in fact I never bought into Ruby on Rails at all. But I do try to keep up with things that can make me more productive.
 
Kenneth Milota
Ranch Hand
Posts: 169
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I don't know if the problem is not wanting to get in on new fads, but more that I just don't get it.  

So, I watched a video where someone tried to give an introduction of what spring is, and he said it is not for programs such as Facebook that use chatting and social media posting which needs a PHP with JavaScript to be done effectively.

Does this mean that if you develop an application using Spring, that you don't use PHP and JavaScript to get it online?
 
Tim Holloway
Bartender
Posts: 19954
94
Android Eclipse IDE Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
PHP is a quick-and-dirty language designed specifically for web applications. It's also notoriously insecure, and they're still struggling to make it object-oriented. It most closely resembles Perl, which in turn looks a lot like C.

Yes, PHP is popular. The Wikipedia software is written in PHP, as is WordPress.

No, you don't need PHP to get online. PHP is useful, if you can tolerate its weaknesses and is still one of my primary choices for knocking out a site quickly. Although my current #1 for that is NodeJS.

You certainly can write social media sites in Java. It's more a matter that social media sites care more about "git 'er dun" in a hurry development and less about security. Java is, in comparison, horrendously slow and expensive to develop in, but its vastly greater security and the large library of services that it can tap into - including high performance - have a special appeal for industrial-grade apps.

JavaScript is actually quite horrible in many ways, but it's virtually the only choice if you need client-side logic and especially AJAX (the "J" in AJAX literally stands for JavaScript). Many Java apps are JavaScript on the client and Java on the server. In fact, popular JavaServer Faces frameworks such as RichFaces and IceFaces actually include the jQuery client-side JavaScript library for their client-side functionality.

jQuery is, in fact, a sterling example of a framework for a non-Java language. Java didn't invent frameworks.
 
Kenneth Milota
Ranch Hand
Posts: 169
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
He said that Spring is a typical framework for sites such as banks where it is mostly information based.  Does that mean they don't use javascript if they use Spring?
 
Stephan van Hulst
Bartender
Posts: 9487
184
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
So far it sounds like the guy has absolutely no clue. Forget that video.

No, you don't need PHP and JavaScript for social media.

No, Spring is not just for banks.

No, JavaScipt and Spring aren't mutually exclusive.

Spring can easily be used as a back-end for a social media sites, with or without JavaScript to make the front-end more dynamic.

Have you ever written a web service using a plain old Java EE servlet? You will find out after you've written a moderately complex service (with a database and multiple types of requests that a user can make), how much work Spring takes out of your hands for the same application.

I'll see if I can write two versions for you to compare later this week, but I also suggest you just try it out.
 
Sheriff
Posts: 12738
210
Android Debian Eclipse IDE IntelliJ IDE Java Linux Mac Spring Ubuntu
  • Likes 3
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Just because the ocean is huge doesn't mean you have to swim in all of it. Like oceans, both Java and Spring are huge and for most people it's impossible to know everything about them. But you can still learn how to program in Java by taking it one little step at a time. Likewise with Spring.

I'll offer my definition of what a framework is and what it does for you: A framework is software that you don't have to write that does things way better than you could ever figure out yourself. The things that frameworks take care of are things that are common to many solutions, regardless of the actual problem domain. In other words, frameworks take care of nitty-gritty, mundane, repetitive, and tedious work that every program needs to do, regardless of what you're actually trying to solve. That leaves you, the programmer, with the more important work of solving the specifics of the problem you're dealing with.

Spring is a huge platform. Its core, as someone mentioned earlier, is taking care of the tedium of creating objects and managing dependency relationships between them. From there, its responsibilities spread out to many other things related to the infrastructure of your application. It helps you get rid of a lot of boilerplate code for managing database connections and queries. It can help you manage the flow of information to/from your application and its users. It helps you manage the security of your application. It will even help manage other frameworks that you want to integrate into your application. It does all this and much, much more.

So, don't choke on your own greed: Elephants are best eaten one bite at a time. Just sit down and take your first bite. Start with the core capability of Spring as mentioned earlier: Dependency Injection and Inversion of Control.
 
Kenneth Milota
Ranch Hand
Posts: 169
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
My misconception is mostly that you need to know front end such as javascript to be able to make a website, and if you're a back end developer, you can write the code, but cannot actually test it out on the internet.  

I'm starting to look into the basics of web development, so maybe my questions will be answered while trying it out, but I just wanted to try clearing up some misconceptions first.
 
Stephan van Hulst
Bartender
Posts: 9487
184
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
If that were true, I would never get any work done.

I often use apps such as Postman or Advanced Rest Client to test my back-ends, or other tools such as Fiddler or sometimes even Wireshark if I'm really deep down the rabbit hole.
 
Ranch Hand
Posts: 39
1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
In general, a framework is a real or conceptual structure intended to serve as a support or guide for the building of something that expands the structure into something useful.

In computer systems, a framework is often a layered structure indicating what kind of programs can or should be built and how they would interrelate. Some computer system frameworks also include actual programs, specify programming interfaces, or offer programming tools for using the frameworks. A framework may be for a set of functions within a system and how they interrelate; the layers of an operating system; the layers of an application subsystem; how communication should be standardized at some level of a network; and so forth. A framework is generally more comprehensive than a protocol and more prescriptive than a structure.
 
Ranch Hand
Posts: 31
2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I recently tried to learn Spring and found it quite hard for a beginner, quite a lot of new concepts if you only know core Java and have no idea about Web development. So I started with the basics like HTTP protocol. Then I found this nice little framework - http://sparkjava.com/ . Easy to use and after few hours I was actually able to build some simple but useful REST API.
 
Kenneth Milota
Ranch Hand
Posts: 169
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
So is it important to learn HTML before you start trying to learn frameworks such as Spring?  Is there anything else that should be studied first?  
 
Tim Holloway
Bartender
Posts: 19954
94
Android Eclipse IDE Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Anybody can write a framework.

Basically, a framework is just something to support common functions for an application. I've dealt with uncounted user-designed frameworks (some of them pretty awful, alas!) over a long and evil career. As I think I said earlier, they prevent you from having to code - and debug! the same code over and over again.

Spring is certainly one of the more popular frameworks, and it seems to be one of the most intimidating, but as I've said before, it's a simple core plus a number of extensions ("projects"). And likely 90% of the projects in Spring I've never used, but some, like Spring JPA I use extensively. And, incidentally, JPA, although officially an API, can also be considered as a framework.

My copy of Manning Publication's Spring In Action is pretty old now, but I think it's a good introduction to Spring.
 
Knute Snortum
Sheriff
Posts: 5443
147
Chrome Eclipse IDE Java Postgres Database VI Editor
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Kenneth Milota wrote:So is it important to learn HTML before you start trying to learn frameworks such as Spring?  


I don't think so.  IIRK you can write an entire project in Spring without any HTML.  I believe some of the configuration files are in XML.
 
Rancher
Posts: 349
12
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Kenneth,

As I scrolled through the replies to your post I found there so many good ones that I personally believe collectively they should be added somewhere on this website like the FAQs...

My reply probably doesn't apply directly to your question about frameworks themselves, rather your concern (which I also read as frustration) over having to learn frameworks, that it seems like a daunting task. I have been there and felt the same anxiety as you (as undoubtedly many other developers have too), and [unfortunately] still do on occasion. But a few years ago, I was asked to take on a build developer's role (the build dev at the time was moving on to another job). In the span of one day I was introduced, briefly trained on, and had handed over to me a full InstallShield IDE tool and told I was now going to be doing all in-house builds that get deployed out to clients, accounts, etc...I was scared out of my wits, but I figured I either waste time worrying about falling flat on my face, or, I take it as an opportunity to experience what build development is about, do my best, and push the builds out the door. It worked out fine. I would be lying if I said I never made mistakes doing build dev, but I made it a point to learn from them, to try and not make the same mistake again, and to continually improve. Twelve years later I have absolutely no fears when it comes to build development - I go to meetings, ask questions that I know will help me achieve the build requirements, and so on. I am not saying I am completely fluent in build development (I am not going to go out and write a book on it any time soon), but my point to this is that, as hard as it can be to do, you have to jump in, try and have a good attitude, to gain valuable experience. In a way, being "thrown into the lion's den" in my case was a blessing because I really didn't have time to question my abilities.

Anyway, I hope this helps. All the best Kenneth.
 
Kenneth Milota
Ranch Hand
Posts: 169
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Right now, I've been learning the basics of HTML, CSS, and JavaScript simultaneously.  My intention is mostly to get something entry level in back end development, but I'm just having too difficult of a time understanding the purpose of a lot of the frameworks and java methods and coding without seeing how they will be used in the front end of development.

So far I've whipped through the basics of JavaScript quickly due to already understanding what much of the JavaScript functions do such as variables, passing in arguments, if/else statements, because they seem to be the same concepts with different syntax.  I imagine it won't be long before it starts to get extremely difficult though.
 
Knute Snortum
Sheriff
Posts: 5443
147
Chrome Eclipse IDE Java Postgres Database VI Editor
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Kenneth Milota wrote:Right now, I've been learning the basics of HTML, CSS, and JavaScript simultaneously.  My intention is mostly to get something entry level in back end development...


But those skills are for front end development.  Java is often used for the back end.
 
Kenneth Milota
Ranch Hand
Posts: 169
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Knute Snortum wrote:

Kenneth Milota wrote:Right now, I've been learning the basics of HTML, CSS, and JavaScript simultaneously.  My intention is mostly to get something entry level in back end development...


But those skills are for front end development.  Java is often used for the back end.



Yes, I know that.

What I meant to say is that I want to understand front end enough so that I'm no longer confused about what is going to be made of what I'm programming in the back end.
Also, maybe I'll enjoy front end more after I learn it and will find that I have enough skills to be a front end developer first before a full stack developer.  

Don't they use javascript for back end as well though?
 
Greenhorn
Posts: 11
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I think you have the idea frameworks are only big bulky frames that do allot of things and force you to go one way. But if you look at the wiki list of frameworks @ https://en.wikipedia.org/wiki/List_of_Java_frameworks You will see there are lots of small usefull frameworks as well, some of which you may even have used already. Frameworks like JUnit, Mockito JodaTime, Lombok, SonarLint/SonarQube as example are pretty commonly seen in projects. And those are not so big that it takes allot of time to use the basics.

I would just take a look through the whole list, see if you have seen or maybe even used some before, and check out some of the frameworks to see if you like them.
 
Don't get me started about those stupid light bulbs.
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!